Support caching of next method in for-of and built-in methods. (#3939)

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2020-06-26 14:47:39 +02:00
committed by GitHub
parent 264bb210c1
commit 0b404ea893
12 changed files with 150 additions and 70 deletions
+38
View File
@@ -119,3 +119,41 @@ var i = 0;
for (var a of obj) {
assert (a === i++);
}
var status = 0;
i = 0;
function yieldNext() {
++status
assert(status === 3 || status === 6 || status === 9)
return {
get value() {
++status
assert(status === 4 || status === 7)
return "Res"
},
done: ++i >= 3
}
}
obj = {
[Symbol.iterator]() {
assert(++status === 1)
return {
get next() {
assert(++status === 2)
return yieldNext
}
}
}
}
function getX() {
++status
assert(status === 5 || status === 8)
return { x:0 }
}
for (getX().x of obj)
;
assert(status == 9)
+1
View File
@@ -360,6 +360,7 @@
<test id="language/statements/continue/simple-and-labeled.js"><reason></reason></test>
<test id="language/statements/for-of/body-dstr-assign-error.js"><reason></reason></test>
<test id="language/statements/for-of/body-dstr-assign.js"><reason></reason></test>
<test id="language/statements/for-of/iterator-next-reference.js"><reason>ES spec change: next method must be cached</reason></test>
<test id="language/statements/for/S12.6.3_A9.1.js"><reason></reason></test>
<test id="language/statements/for/S12.6.3_A9.js"><reason></reason></test>
<test id="language/statements/generators/has-instance.js"><reason></reason></test>