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 var stdlib = {}; | 5 var stdlib = {}; |
6 var foreign = {}; | 6 var foreign = {}; |
7 var heap = new ArrayBuffer(64 * 1024); | 7 var heap = new ArrayBuffer(64 * 1024); |
8 | 8 |
9 function Word32And(rhs) { | 9 function Word32And(rhs) { |
10 var name = "and_0x" + Number(rhs).toString(16); | 10 var name = "and_0x" + Number(rhs).toString(16); |
11 var m = eval("function Module(stdlib, foreign, heap) {\n" | 11 var m = eval( |
12 + " \"use asm\";\n" | 12 'function Module(stdlib, foreign, heap) {\n' + |
13 + " function " + name + "(lhs) {\n" | 13 ' "use asm";\n' + |
14 + " return (lhs | 0) & 0x" + Number(rhs).toString(16) + ";\n" | 14 ' function ' + name + '(lhs) {\n' + |
15 + " }\n" | 15 ' lhs = lhs | 0;\n' + |
16 + " return { f: " + name + "}\n" | 16 ' return (lhs & 0x' + Number(rhs).toString(16) + ') | 0;\n' + |
17 + "}; Module"); | 17 ' }\n' + |
| 18 ' return { f: ' + name + '}\n' + |
| 19 '}; Module'); |
18 return m(stdlib, foreign, heap).f; | 20 return m(stdlib, foreign, heap).f; |
19 } | 21 } |
20 | 22 |
21 var masks = [0xffffffff, 0xf0f0f0f0, 0x80ffffff, 0x07f77f0f, 0xdeadbeef, | 23 var masks = [0xffffffff, 0xf0f0f0f0, 0x80ffffff, 0x07f77f0f, 0xdeadbeef, |
22 0x0fffff00, 0x0ff0, 0xff, 0x00]; | 24 0x0fffff00, 0x0ff0, 0xff, 0x00]; |
23 for (var i in masks) { | 25 for (var i in masks) { |
24 var rhs = masks[i]; | 26 var rhs = masks[i]; |
25 var and = Word32And(rhs); | 27 var and = Word32And(rhs); |
26 for (var lhs = -2147483648; lhs < 2147483648; lhs += 3999773) { | 28 for (var lhs = -2147483648; lhs < 2147483648; lhs += 3999773) { |
27 assertEquals(lhs & rhs, and(lhs)); | 29 assertEquals(lhs & rhs, and(lhs)); |
28 } | 30 } |
29 } | 31 } |
OLD | NEW |