summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/asm.js/neuter-during-arguments-coercion.js
blob: bfe8913e79f77cf8d6fc5042d6d296b2f5286f39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
load(libdir + "asm.js");

function f(stdlib, foreign, buffer)
{
  "use asm";
  var i32 = new stdlib.Int32Array(buffer);
  function set(v)
  {
    v=v|0;
    i32[5] = v;
  }
  return set;
}
if (isAsmJSCompilationAvailable())
  assertEq(isAsmJSModule(f), true);

var i32 = new Int32Array(65536);
var buffer = i32.buffer;
var set = f(this, null, buffer);
if (isAsmJSCompilationAvailable())
  assertEq(isAsmJSFunction(set), true);

try
{
  set({ valueOf() { detachArrayBuffer(buffer); return 17; } });
}
catch (e) { /* if an exception thrown, swallow */ }