Fixed a bug with interpreter peeling introduced in #1510 (#1578)

Lack of support for all the varieties of lambda function in Rhino in the new "interpreter peeling" code introduced to make continuations work better was holding back additional conversions to lambda functions.
This commit is contained in:
Andrea Bergia 2024-08-24 00:58:37 +02:00 коммит произвёл GitHub
Родитель 7e4fa18e09
Коммит 8c4b663456
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
2 изменённых файлов: 4 добавлений и 1 удалений

Просмотреть файл

@ -1784,6 +1784,8 @@ public final class Interpreter extends Icode implements Evaluator {
ArrowFunction afun = (ArrowFunction) fun;
fun = afun.getTargetFunction();
funThisObj = afun.getCallThis(cx);
} else if (fun instanceof LambdaConstructor) {
break;
} else if (fun instanceof LambdaFunction) {
fun = ((LambdaFunction) fun).getTarget();
} else if (fun instanceof BoundFunction) {

Просмотреть файл

@ -37,7 +37,8 @@ public class LambdaFunctionTest {
}
private void eval(String source) {
cx.evaluateString(root, source, "test.js", 1, null);
Utils.runWithAllOptimizationLevels(
ignored -> cx.evaluateString(root, source, "test.js", 1, null));
}
@Test