mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 818023 - fun_getProperty: Use non-buitin script iterator. r=waldo
This commit is contained in:
parent
e5c1a5813f
commit
d150d2964c
53
js/src/jit-test/tests/ion/bug818023.js
Normal file
53
js/src/jit-test/tests/ion/bug818023.js
Normal file
@ -0,0 +1,53 @@
|
||||
Function.prototype.callX = Function.prototype.call;
|
||||
var x;
|
||||
function f() {
|
||||
x = f.caller;
|
||||
return x;
|
||||
}
|
||||
|
||||
function g() {
|
||||
return f.callX(null);
|
||||
}
|
||||
|
||||
function h1() {
|
||||
// native
|
||||
return ([0].map(f))[0];
|
||||
}
|
||||
|
||||
function h2() {
|
||||
// self-hosted
|
||||
x = null;
|
||||
[0].forEach(f);
|
||||
return x;
|
||||
}
|
||||
|
||||
function k() {
|
||||
x = null;
|
||||
[0, 1].sort(f);
|
||||
return x;
|
||||
}
|
||||
|
||||
function l() {
|
||||
return f();
|
||||
}
|
||||
|
||||
assertEq(g(), g);
|
||||
assertEq(h1(), h1);
|
||||
assertEq(h2(), h2);
|
||||
assertEq(k(), k);
|
||||
assertEq(l(), l);
|
||||
|
||||
var baz;
|
||||
var foo = {callX: function() { return "m"; }};
|
||||
function bar() {
|
||||
return baz.caller;
|
||||
}
|
||||
function m() {
|
||||
return baz.callX(null);
|
||||
}
|
||||
|
||||
baz = foo;
|
||||
assertEq(m(), "m");
|
||||
baz = bar;
|
||||
assertEq(m(), m);
|
||||
assertEq(m(), m);
|
@ -99,7 +99,7 @@ fun_getProperty(JSContext *cx, HandleObject obj_, HandleId id, MutableHandleValu
|
||||
vp.setNull();
|
||||
|
||||
/* Find fun's top-most activation record. */
|
||||
StackIter iter(cx);
|
||||
NonBuiltinScriptFrameIter iter(cx);
|
||||
for (; !iter.done(); ++iter) {
|
||||
if (!iter.isFunctionFrame() || iter.isEvalFrame())
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user