| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 function Module(stdlib, foreign, heap) { | 5 function Module(stdlib, foreign, heap) { |
| 6 "use asm"; | 6 "use asm"; |
| 7 var MEM32 = new stdlib.Int32Array(heap); | 7 var MEM32 = new stdlib.Int32Array(heap); |
| 8 function loadm4194304() { | 8 function loadm4194304() { |
| 9 return MEM32[-4194304]; | 9 var i = -4194304 << 2; |
| 10 return MEM32[i >> 2] | 0; |
| 10 } | 11 } |
| 11 function loadm0() { | 12 function loadm0() { |
| 12 return MEM32[-0]; | 13 return MEM32[-0] | 0; |
| 13 } | 14 } |
| 14 function load0() { | 15 function load0() { |
| 15 return MEM32[0]; | 16 return MEM32[0] | 0; |
| 16 } | 17 } |
| 17 function load4() { | 18 function load4() { |
| 18 return MEM32[4]; | 19 return MEM32[4] | 0; |
| 19 } | 20 } |
| 20 function storem4194304(v) { | 21 function storem4194304(v) { |
| 21 MEM32[-4194304] = v; | 22 v = v | 0; |
| 23 var i = -4194304 << 2; |
| 24 MEM32[i >> 2] = v; |
| 22 } | 25 } |
| 23 function storem0(v) { | 26 function storem0(v) { |
| 27 v = v | 0; |
| 24 MEM32[-0] = v; | 28 MEM32[-0] = v; |
| 25 } | 29 } |
| 26 function store0(v) { | 30 function store0(v) { |
| 27 MEM32[0] = v; | 31 v = v | 0; |
| 32 MEM32[0 >> 2] = v; |
| 28 } | 33 } |
| 29 function store4(v) { | 34 function store4(v) { |
| 30 MEM32[4] = v; | 35 v = v | 0; |
| 36 MEM32[(4 << 2) >> 2] = v; |
| 31 } | 37 } |
| 32 return { loadm4194304: loadm4194304, storem4194304: storem4194304, | 38 return { loadm4194304: loadm4194304, storem4194304: storem4194304, |
| 33 loadm0: loadm0, storem0: storem0, load0: load0, store0: store0, | 39 loadm0: loadm0, storem0: storem0, load0: load0, store0: store0, |
| 34 load4: load4, store4: store4 }; | 40 load4: load4, store4: store4 }; |
| 35 } | 41 } |
| 36 | 42 |
| 37 var m = Module(this, {}, new ArrayBuffer(4)); | 43 var m = Module(this, {}, new ArrayBuffer(4)); |
| 38 | 44 |
| 39 assertEquals(undefined, m.loadm4194304()); | 45 assertEquals(0, m.loadm4194304()); |
| 40 assertEquals(0, m.loadm0()); | 46 assertEquals(0, m.loadm0()); |
| 41 assertEquals(0, m.load0()); | 47 assertEquals(0, m.load0()); |
| 42 assertEquals(undefined, m.load4()); | 48 assertEquals(0, m.load4()); |
| 43 m.storem4194304(123456789); | 49 m.storem4194304(123456789); |
| 44 assertEquals(undefined, m.loadm4194304()); | 50 assertEquals(0, m.loadm4194304()); |
| 45 assertEquals(0, m.loadm0()); | 51 assertEquals(0, m.loadm0()); |
| 46 assertEquals(0, m.load0()); | 52 assertEquals(0, m.load0()); |
| 47 assertEquals(undefined, m.load4()); | 53 assertEquals(0, m.load4()); |
| 48 m.storem0(987654321); | 54 m.storem0(987654321); |
| 49 assertEquals(undefined, m.loadm4194304()); | 55 assertEquals(0, m.loadm4194304()); |
| 50 assertEquals(987654321, m.loadm0()); | 56 assertEquals(987654321, m.loadm0()); |
| 51 assertEquals(987654321, m.load0()); | 57 assertEquals(987654321, m.load0()); |
| 52 assertEquals(undefined, m.load4()); | 58 assertEquals(0, m.load4()); |
| 53 m.store0(0x12345678); | 59 m.store0(0x12345678); |
| 54 assertEquals(undefined, m.loadm4194304()); | 60 assertEquals(0, m.loadm4194304()); |
| 55 assertEquals(0x12345678, m.loadm0()); | 61 assertEquals(0x12345678, m.loadm0()); |
| 56 assertEquals(0x12345678, m.load0()); | 62 assertEquals(0x12345678, m.load0()); |
| 57 assertEquals(undefined, m.load4()); | 63 assertEquals(0, m.load4()); |
| 58 m.store4(43); | 64 m.store4(43); |
| 59 assertEquals(undefined, m.loadm4194304()); | 65 assertEquals(0, m.loadm4194304()); |
| 60 assertEquals(0x12345678, m.loadm0()); | 66 assertEquals(0x12345678, m.loadm0()); |
| 61 assertEquals(0x12345678, m.load0()); | 67 assertEquals(0x12345678, m.load0()); |
| 62 assertEquals(undefined, m.load4()); | 68 assertEquals(0, m.load4()); |
| OLD | NEW |