| // 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()); |
| })(); |