Mention exporting memory utilities more prominently in loader readme, fixes #318

This commit is contained in:
dcodeIO 2018-11-08 11:54:36 +01:00
parent 7cfc43ccbf
commit 2ecec660d2

View File

@ -61,21 +61,16 @@ Instances are automatically populated with useful utility:
A 64-bit float view on the memory. A 64-bit float view on the memory.
* **newString**(str: `string`): `number`<br /> * **newString**(str: `string`): `number`<br />
Allocates a new string in the module's memory and returns its pointer. Requires `memory.allocate` to be exported from your module's entry file, i.e.: Allocates a new string in the module's memory and returns its pointer.<sup>2</sup>
```js
import "allocator/tlsf";
export { memory };
```
* **getString**(ptr: `number`): `string`<br /> * **getString**(ptr: `number`): `string`<br />
Gets a string from the module's memory by its pointer. Gets a string from the module's memory by its pointer.
* **newArray**(view: `TypedArray`, length?: `number`, unsafe?: `boolean`): `number`<br /> * **newArray**(view: `TypedArray`, length?: `number`, unsafe?: `boolean`): `number`<br />
Copies a typed array into the module's memory and returns its pointer. Copies a typed array into the module's memory and returns its pointer.<sup>2</sup>
* **newArray**(ctor: `TypedArrayConstructor`, length: `number`, unsafe?: `boolean`): `number`<br /> * **newArray**(ctor: `TypedArrayConstructor`, length: `number`, unsafe?: `boolean`): `number`<br />
Creates a typed array in the module's memory and returns its pointer. Creates a typed array in the module's memory and returns its pointer.<sup>2</sup>
* **getArray**(ctor: `TypedArrayConstructor`, ptr: `number`): `TypedArray`<br /> * **getArray**(ctor: `TypedArrayConstructor`, ptr: `number`): `TypedArray`<br />
Gets a view on a typed array in the module's memory by its pointer. Gets a view on a typed array in the module's memory by its pointer.
@ -90,7 +85,8 @@ Instances are automatically populated with useful utility:
Creates a new function in the module's table and returns its pointer. Note that only actual Creates a new function in the module's table and returns its pointer. Note that only actual
WebAssembly functions, i.e. as exported by the module, are supported. WebAssembly functions, i.e. as exported by the module, are supported.
<sup>1</sup> This feature has not yet landed in any VM as of this writing. <sup>1</sup> This feature has not yet landed in any VM as of this writing.<br />
<sup>2</sup> Requires that memory utilities have been exported through `export { memory }` within the entry file.
Examples Examples
-------- --------
@ -137,19 +133,24 @@ myModule.F64[ptrToFloat64 >>> 3] = newValue;
**Note:** Make sure to reference the views as shown above as these will automatically be updated when the module's memory grows. **Note:** Make sure to reference the views as shown above as these will automatically be updated when the module's memory grows.
### Allocating/obtaining strings to/from memory ### Working with strings and arrays
Strings and arrays cannot yet flow in and out of WebAssembly naturally, hence it is necessary to create them in the module's memory using the `newString` and `newArray` helpers. Afterwards, instead of passing the string or array directly, the resulting reference (pointer) is provided instead:
```js ```js
// Allocating a string, i.e. to be passed to an export expecting one
var str = "Hello world!"; var str = "Hello world!";
var ptr = module.newString(str); var ptr = module.newString(str);
// Disposing a string that is no longer needed (requires memory.free to be exported) // ... do something with ptr, i.e. call a WebAssembly export ...
module.memory.free(ptr); ```
// Obtaining a string, i.e. as returned by an export Similarly, when a string or array is returned from a WebAssembly function, a reference (pointer) is received on the JS side and the `getString` and `getArray` helpers can be used to obtain their values:
```js
var ptrToString = ...; var ptrToString = ...;
var str = module.getString(ptrToString); var str = module.getString(ptrToString);
// ... do something with str ...
``` ```
### Usage with TypeScript definitions produced by the compiler ### Usage with TypeScript definitions produced by the compiler