aboutsummaryrefslogtreecommitdiff
path: root/src/jsifier.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/jsifier.js')
-rw-r--r--src/jsifier.js11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index 7e824286..af8d19ab 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -149,10 +149,13 @@ function JSify(data, functionsOnly, givenTypes, givenFunctions, givenGlobalVaria
}
function makeCopyValue(dest, destPos, src, srcPos, type, modifier) {
- var types = (type !== 'null' || !USE_TYPED_ARRAYS) ? [type] : ['i32', 'double'];
- return types.map(function(currType) {
- return makeSetValue(dest, destPos, makeGetValue(src, srcPos, currType) + (modifier || ''), currType);
- }).join(' ');
+ if (type !== 'null') {
+ return makeSetValue(dest, destPos, makeGetValue(src, srcPos, type) + (modifier || ''), type);
+ }
+ // Null is special-cased: We copy over all heaps
+ return 'IHEAP[' + dest + '+' + destPos + '] = IHEAP[' + src + '+' + srcPos + ']; ' +
+ 'FHEAP[' + dest + '+' + destPos + '] = FHEAP[' + src + '+' + srcPos + ']; ' +
+ (SAFE_HEAP ? 'SAFE_HEAP_ACCESS(' + dest + ' + ' + destPos + ', null, true)' : '');
}
function makeEmptyStruct(type) {