-
Notifications
You must be signed in to change notification settings - Fork 3.3k
/
library_legacy.js
78 lines (70 loc) · 2.96 KB
/
library_legacy.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
* @license
* Copyright 2010 The Emscripten Authors
* SPDX-License-Identifier: MIT
*/
mergeInto(LibraryManager.library, {
$ALLOC_NORMAL: 0, // Tries to use _malloc()
$ALLOC_STACK: 1, // Lives for the duration of the current function call
/**
* allocate(): This function is no longer used by emscripten but is kept around to avoid
* breaking external users.
* You should normally not use allocate(), and instead allocate
* memory using _malloc()/stackAlloc(), initialize it with
* setValue(), and so forth.
* @param {(Uint8Array|Array<number>)} slab: An array of data.
* @param {number=} allocator : How to allocate memory, see ALLOC_*
*/
$allocate__deps: ['$ALLOC_NORMAL', '$ALLOC_STACK', 'malloc'],
$allocate: function(slab, allocator) {
var ret;
#if ASSERTIONS
assert(typeof allocator == 'number', 'allocate no longer takes a type argument')
assert(typeof slab != 'number', 'allocate no longer takes a number as arg0')
#endif
if (allocator == ALLOC_STACK) {
ret = stackAlloc(slab.length);
} else {
ret = _malloc(slab.length);
}
if (!slab.subarray && !slab.slice) {
slab = new Uint8Array(slab);
}
HEAPU8.set(slab, ret);
return ret;
},
// Deprecated: This function should not be called because it is unsafe and
// does not provide a maximum length limit of how many bytes it is allowed to
// write. Prefer calling the function stringToUTF8Array() instead, which takes
// in a maximum length that can be used to be secure from out of bounds
// writes.
$writeStringToMemory__docs: '/** @deprecated @param {boolean=} dontAddNull */',
$writeStringToMemory__deps: ['$lengthBytesUTF8', '$stringToUTF8'],
$writeStringToMemory: function(string, buffer, dontAddNull) {
warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!');
var /** @type {number} */ lastChar, /** @type {number} */ end;
if (dontAddNull) {
// stringToUTF8 always appends null. If we don't want to do that, remember the
// character that existed at the location where the null will be placed, and restore
// that after the write (below).
end = buffer + lengthBytesUTF8(string);
lastChar = HEAP8[end];
}
stringToUTF8(string, buffer, Infinity);
if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character.
},
// Deprecated: Use stringToAscii
$writeAsciiToMemory__docs: '/** @param {boolean=} dontAddNull */',
$writeAsciiToMemory: function(str, buffer, dontAddNull) {
for (var i = 0; i < str.length; ++i) {
#if ASSERTIONS
assert(str.charCodeAt(i) === (str.charCodeAt(i) & 0xff));
#endif
{{{ makeSetValue('buffer++', 0, 'str.charCodeAt(i)', 'i8') }}};
}
// Null-terminate the string
if (!dontAddNull) {{{ makeSetValue('buffer', 0, 0, 'i8') }}};
},
$allocateUTF8: '$stringToNewUTF8',
$allocateUTF8OnStack: '$stringToUTF8OnStack',
});