From 4cc70384d6fe06e27353026af8328567d74a0a1a Mon Sep 17 00:00:00 2001 From: HyukWoo Park Date: Tue, 12 Dec 2023 21:02:45 +0900 Subject: [PATCH 1/2] Add untracked flag for web-tooling-benchmark submodule Signed-off-by: HyukWoo Park --- .github/workflows/es-actions.yml | 1 - .gitmodules | 19 ++++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/es-actions.yml b/.github/workflows/es-actions.yml index 6bbd39291..03bb1dc4d 100644 --- a/.github/workflows/es-actions.yml +++ b/.github/workflows/es-actions.yml @@ -536,7 +536,6 @@ jobs: rm -rf $HOME/Escargot-cache/ - name: Run x64 release test run: | - $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/release/x64/escargot" web-tooling-benchmark $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/release/x64/escargot" web-tooling-benchmark rm -rf $HOME/Escargot-cache/ - name: Handle error cases diff --git a/.gitmodules b/.gitmodules index 872469a8b..286a1a3a2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,17 +15,18 @@ url = https://github.com/chromium/octane.git ignore = untracked [submodule "test/kangax"] - path = test/kangax - url = https://github.com/kangax/compat-table.git + path = test/kangax + url = https://github.com/kangax/compat-table.git ignore = untracked [submodule "third_party/googletest"] - path = third_party/googletest - url = https://github.com/google/googletest.git + path = third_party/googletest + url = https://github.com/google/googletest.git ignore = untracked [submodule "third_party/walrus"] - path = third_party/walrus - url = https://github.com/Samsung/walrus.git - ignore = untracked + path = third_party/walrus + url = https://github.com/Samsung/walrus.git + ignore = untracked [submodule "test/web-tooling-benchmark"] - path = test/web-tooling-benchmark - url = https://github.com/v8/web-tooling-benchmark + path = test/web-tooling-benchmark + url = https://github.com/v8/web-tooling-benchmark + ignore = untracked From 19797c1bfcbf72ba6c090c7fbe389bdbcc083b54 Mon Sep 17 00:00:00 2001 From: HyukWoo Park Date: Tue, 12 Dec 2023 17:38:20 +0900 Subject: [PATCH 2/2] Fix parsing bugs in increment or decrement operations Signed-off-by: HyukWoo Park --- src/parser/esprima_cpp/esprima.cpp | 32 ++++++------------------------ test/vendortest | 2 +- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/src/parser/esprima_cpp/esprima.cpp b/src/parser/esprima_cpp/esprima.cpp index 61195f5eb..008d17181 100644 --- a/src/parser/esprima_cpp/esprima.cpp +++ b/src/parser/esprima_cpp/esprima.cpp @@ -2751,22 +2751,11 @@ class Parser { this->nextToken(token); exprNode = this->inheritCoverGrammar(builder, &Parser::parseUnaryExpression); - if (exprNode->isLiteral() || exprNode->type() == ASTNodeType::ThisExpression) { - this->throwError(Messages::InvalidLHSInAssignment); - } - if (this->context->strict && exprNode->type() == Identifier && Scanner::isRestrictedWord(escargotContext, exprNode->asIdentifier()->name())) { + if (UNLIKELY(this->context->strict && exprNode->type() == Identifier && Scanner::isRestrictedWord(escargotContext, exprNode->asIdentifier()->name()))) { this->throwError(Messages::StrictLHSPrefix); } - if (!this->context->isAssignmentTarget && this->context->strict) { - this->throwError(Messages::InvalidLHSInAssignment); - } - - auto exprNodeType = exprNode->type(); - if (UNLIKELY(exprNodeType == ASTNodeType::MemberExpression && exprNode->asMemberExpression()->isOptional())) { - this->throwError(Messages::InvalidLHSInAssignment); - } - if (UNLIKELY(exprNodeType == ASTNodeType::ImportCall)) { + if (UNLIKELY((!this->context->isAssignmentTarget && (exprNode->type() != ASTNodeType::CallExpression || this->context->strict)) || (exprNode->type() == ObjectExpression))) { this->throwError(Messages::InvalidLHSInAssignment); } @@ -2783,20 +2772,11 @@ class Parser { exprNode = this->inheritCoverGrammar(builder, &Parser::parseLeftHandSideExpressionAllowCall); if (!this->hasLineTerminator && this->lookahead.type == Token::PunctuatorToken && (this->match(PlusPlus) || this->match(MinusMinus))) { bool isPlus = this->match(PlusPlus); - if (exprNode->isLiteral() || exprNode->type() == ASTNodeType::ThisExpression) { - this->throwError(Messages::InvalidLHSInAssignment); - } - if (this->context->strict && exprNode->isIdentifier() && Scanner::isRestrictedWord(escargotContext, exprNode->asIdentifier()->name())) { + if (UNLIKELY(this->context->strict && exprNode->isIdentifier() && Scanner::isRestrictedWord(escargotContext, exprNode->asIdentifier()->name()))) { this->throwError(Messages::StrictLHSPostfix); } - if (!this->context->isAssignmentTarget && this->context->strict) { - this->throwError(Messages::InvalidLHSInAssignment); - } - auto exprNodeType = exprNode->type(); - if (UNLIKELY(exprNodeType == ASTNodeType::MemberExpression && exprNode->asMemberExpression()->isOptional())) { - this->throwError(Messages::InvalidLHSInAssignment); - } - if (UNLIKELY(exprNodeType == ASTNodeType::ImportCall)) { + + if (UNLIKELY((!this->context->isAssignmentTarget && (exprNode->type() != ASTNodeType::CallExpression || this->context->strict)) || (exprNode->type() == ObjectExpression))) { this->throwError(Messages::InvalidLHSInAssignment); } @@ -4362,7 +4342,7 @@ class Parser { init = nullptr; type = statementTypeForIn; } else if (this->lookahead.type == Token::IdentifierToken && this->lookahead.equalsToKeywordNoEscape(OfKeyword)) { - if (!this->context->isAssignmentTarget || (initNodeType >= ASTNodeType::AssignmentExpression && initNodeType <= ASTNodeType::AssignmentExpressionSimple)) { + if (UNLIKELY(!this->context->isAssignmentTarget || (initNodeType >= ASTNodeType::AssignmentExpression && initNodeType <= ASTNodeType::AssignmentExpressionSimple))) { this->throwError(Messages::InvalidLHSInForLoop); } diff --git a/test/vendortest b/test/vendortest index 45a8c9b00..b7e621671 160000 --- a/test/vendortest +++ b/test/vendortest @@ -1 +1 @@ -Subproject commit 45a8c9b007201fbac0dc8c647535c58a3506c774 +Subproject commit b7e62167186be486cc0586551cfbe18a32fc6b0f