Skip to content

Commit 2bd537e

Browse files
committed
[Memory64] embind / safe heap JS changes for 64-bit
1 parent b55a3c3 commit 2bd537e

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/embind/embind.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,7 @@ var LibraryEmbind = {
405405
},
406406

407407
$heap32VectorToArray: function(count, firstElement) {
408+
{{{ from64('firstElement') }}}
408409
var array = [];
409410
for (var i = 0; i < count; i++) {
410411
array.push(HEAP32[(firstElement >> 2) + i]);
@@ -476,6 +477,7 @@ var LibraryEmbind = {
476477

477478
$getShiftFromSize__deps: [],
478479
$getShiftFromSize: function(size) {
480+
{{{ from64('size') }}}
479481
switch (size) {
480482
case 1: return 0;
481483
case 2: return 1;
@@ -874,6 +876,10 @@ var LibraryEmbind = {
874876
Uint32Array,
875877
Float32Array,
876878
Float64Array,
879+
#if WASM_BIGINT
880+
BigInt64Array,
881+
BigUint64Array,
882+
#endif
877883
];
878884

879885
var TA = typeMapping[dataTypeIndex];

src/runtime_safe_heap.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
@param {number|boolean=} noSafe */
1515
function setValue(ptr, value, type, noSafe) {
1616
type = type || 'i8';
17-
if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
17+
if (type.charAt(type.length-1) === '*') type = '{{{ POINTER_TYPE }}}';
1818
#if SAFE_HEAP
1919
if (noSafe) {
2020
switch (type) {
@@ -49,7 +49,7 @@ function setValue(ptr, value, type, noSafe) {
4949
@param {number|boolean=} noSafe */
5050
function getValue(ptr, type, noSafe) {
5151
type = type || 'i8';
52-
if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
52+
if (type.charAt(type.length-1) === '*') type = '{{{ POINTER_TYPE }}}';
5353
#if SAFE_HEAP
5454
if (noSafe) {
5555
switch (type) {
@@ -89,7 +89,7 @@ function getSafeHeapType(bytes, isFloat) {
8989
case 1: return 'i8';
9090
case 2: return 'i16';
9191
case 4: return isFloat ? 'float' : 'i32';
92-
case 8: return 'double';
92+
case 8: return isFloat ? 'double' : 'i64';
9393
default: assert(0);
9494
}
9595
}

0 commit comments

Comments
 (0)