diff options
author | Alon Zakai <azakai@mozilla.com> | 2010-12-31 22:49:25 -0800 |
---|---|---|
committer | Alon Zakai <azakai@mozilla.com> | 2010-12-31 22:49:25 -0800 |
commit | 0a2735ebc744bb877b20ff4b9669ab55b8e5100b (patch) | |
tree | af0c945d0d5d7b887327a13360c998f864a1706b /src/jsifier.js | |
parent | f662276ac91cca8a86139eb2f5b1b50536ef071d (diff) |
allow SAFE_HEAP with typed arrays; fix minor uncovered bugs; add SAFE_HEAP_LOG option
Diffstat (limited to 'src/jsifier.js')
-rw-r--r-- | src/jsifier.js | 11 |
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) { |