| // Copyright 2014 the V8 project authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| (function() { | |
| var asm = (function Module(global, env, buffer) { | |
| "use asm"; | |
| var i8 = new global.Int8Array(buffer); | |
| var u8 = new global.Uint8Array(buffer); | |
| var i16 = new global.Int16Array(buffer); | |
| var u16 = new global.Uint16Array(buffer); | |
| var i32 = new global.Int32Array(buffer); | |
| var u32 = new global.Uint32Array(buffer); | |
| var H = 0; | |
| function store_i8() { | |
| H = 4294967295; | |
| i8[0 >> 0]= H; | |
| return i8[0 >> 0]; | |
| } | |
| function store_u8() { | |
| H = 4294967295; | |
| u8[0 >> 0]= H; | |
| return u8[0 >> 0]; | |
| } | |
| function store_i16() { | |
| H = 4294967295; | |
| i16[0 >> 0]= H; | |
| return i16[0 >> 0]; | |
| } | |
| function store_u16() { | |
| H = 4294967295; | |
| u16[0 >> 0]= H; | |
| return u16[0 >> 0]; | |
| } | |
| function store_i32() { | |
| H = 4294967295; | |
| i32[0 >> 0]= H; | |
| return i32[0 >> 0]; | |
| } | |
| function store_u32() { | |
| H = 4294967295; | |
| u32[0 >> 0]= H; | |
| return u32[0 >> 0]; | |
| } | |
| return { store_i8: store_i8, | |
| store_u8: store_u8, | |
| store_i16: store_i16, | |
| store_u16: store_u16, | |
| store_i32: store_i32, | |
| store_u32: store_u32 }; | |
| })({ | |
| "Int8Array": Int8Array, | |
| "Uint8Array": Uint8Array, | |
| "Int16Array": Int16Array, | |
| "Uint16Array": Uint16Array, | |
| "Int32Array": Int32Array, | |
| "Uint32Array": Uint32Array | |
| }, {}, new ArrayBuffer(64 * 1024)); | |
| assertEquals(-1, asm.store_i8()); | |
| assertEquals(255, asm.store_u8()); | |
| assertEquals(-1, asm.store_i16()); | |
| assertEquals(65535, asm.store_u16()); | |
| assertEquals(-1, asm.store_i32()); | |
| assertEquals(4294967295, asm.store_u32()); | |
| })(); | |
| (function() { | |
| var asm = (function Module(global, env, buffer) { | |
| "use asm"; | |
| var i32 = new global.Int32Array(buffer); | |
| var H = 0; | |
| // This is not valid asm.js, but we should still generate correct code. | |
| function store_i32_from_string() { | |
| H = "3"; | |
| i32[0 >> 0]= H; | |
| return i32[0 >> 0]; | |
| } | |
| return { store_i32_from_string: store_i32_from_string }; | |
| })({ | |
| "Int32Array": Int32Array | |
| }, {}, new ArrayBuffer(64 * 1024)); | |
| assertEquals(3, asm.store_i32_from_string()); | |
| })(); |