diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-12-10 10:37:15 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-12-10 10:37:15 -0800 |
commit | c9026478f5def2fad7ef6c3a856a5b449f4def07 (patch) | |
tree | a63dffefcebcde716082dbe4157f11ff977fe0e6 /src | |
parent | 5ef5f0458be89b38b62be06d44c847b9dfd7736f (diff) |
do unsigned 32-bit loads properly in ta1
Diffstat (limited to 'src')
-rw-r--r-- | src/parseTools.js | 4 | ||||
-rw-r--r-- | src/preamble.js | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/parseTools.js b/src/parseTools.js index a2f4458f..024026c8 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1238,7 +1238,7 @@ function makeGetPos(ptr) { return ptr; } -var IHEAP_FHEAP = set('IHEAP', 'FHEAP'); +var IHEAP_FHEAP = set('IHEAP', 'IHEAPU', 'FHEAP'); function makePointer(slab, pos, allocator, type) { assert(type, 'makePointer requires type info'); @@ -1278,7 +1278,7 @@ function makeGetSlabs(ptr, type, allowMultiple, unsigned) { if (type in Runtime.FLOAT_TYPES || type === 'int64') { // XXX should be i64, no? return ['FHEAP']; // If USE_FHEAP is false, will fail at runtime. At compiletime we do need it for library stuff. } else if (type in Runtime.INT_TYPES || isPointerType(type)) { - return ['IHEAP']; + return [unsigned ? 'IHEAPU' : 'IHEAP']; } else { assert(allowMultiple, 'Unknown slab type and !allowMultiple: ' + type); if (USE_FHEAP) { diff --git a/src/preamble.js b/src/preamble.js index 2fd8f94c..a6556095 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -521,7 +521,7 @@ function alignMemoryPage(x) { var HEAP; #if USE_TYPED_ARRAYS == 1 -var IHEAP; +var IHEAP, IHEAPU; #if USE_FHEAP var FHEAP; #endif @@ -547,6 +547,7 @@ function enlargeMemory() { var oldIHEAP = IHEAP; HEAP = IHEAP = new Int32Array(TOTAL_MEMORY); IHEAP.set(oldIHEAP); + IHEAPU = new Uint32Array(IHEAP.buffer); #if USE_FHEAP var oldFHEAP = FHEAP; FHEAP = new Float64Array(TOTAL_MEMORY); @@ -579,6 +580,7 @@ var FAST_MEMORY = Module['FAST_MEMORY'] || {{{ FAST_MEMORY }}}; #if USE_TYPED_ARRAYS == 1 HEAP = IHEAP = new Int32Array(TOTAL_MEMORY); + IHEAPU = new Uint32Array(IHEAP.buffer); #if USE_FHEAP FHEAP = new Float64Array(TOTAL_MEMORY); #endif |