| Index: src/asmjs/asm-wasm-builder.cc
|
| diff --git a/src/asmjs/asm-wasm-builder.cc b/src/asmjs/asm-wasm-builder.cc
|
| index c4b5c02d12874d09498ecf9097e01f03adf75cd2..90c2e78c68420b3927370c7e955219c9a495c70c 100644
|
| --- a/src/asmjs/asm-wasm-builder.cc
|
| +++ b/src/asmjs/asm-wasm-builder.cc
|
| @@ -39,7 +39,7 @@ struct ForeignVariable {
|
| LocalType type;
|
| };
|
|
|
| -class AsmWasmBuilderImpl : public AstVisitor {
|
| +class AsmWasmBuilderImpl final : public AstVisitor<AsmWasmBuilderImpl> {
|
| public:
|
| AsmWasmBuilderImpl(Isolate* isolate, Zone* zone, FunctionLiteral* literal,
|
| AsmTyper* typer)
|
| @@ -121,9 +121,9 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| BuildForeignInitFunction();
|
| }
|
|
|
| - void VisitVariableDeclaration(VariableDeclaration* decl) override {}
|
| + void VisitVariableDeclaration(VariableDeclaration* decl) {}
|
|
|
| - void VisitFunctionDeclaration(FunctionDeclaration* decl) override {
|
| + void VisitFunctionDeclaration(FunctionDeclaration* decl) {
|
| DCHECK_EQ(kModuleScope, scope_);
|
| DCHECK_NULL(current_function_builder_);
|
| uint32_t index = LookupOrInsertFunction(decl->proxy()->var());
|
| @@ -135,9 +135,9 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| local_variables_.Clear();
|
| }
|
|
|
| - void VisitImportDeclaration(ImportDeclaration* decl) override {}
|
| + void VisitImportDeclaration(ImportDeclaration* decl) {}
|
|
|
| - void VisitStatements(ZoneList<Statement*>* stmts) override {
|
| + void VisitStatements(ZoneList<Statement*>* stmts) {
|
| for (int i = 0; i < stmts->length(); ++i) {
|
| Statement* stmt = stmts->at(i);
|
| ExpressionStatement* e = stmt->AsExpressionStatement();
|
| @@ -149,7 +149,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitBlock(Block* stmt) override {
|
| + void VisitBlock(Block* stmt) {
|
| if (stmt->statements()->length() == 1) {
|
| ExpressionStatement* expr =
|
| stmt->statements()->at(0)->AsExpressionStatement();
|
| @@ -186,17 +186,15 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| };
|
|
|
| - void VisitExpressionStatement(ExpressionStatement* stmt) override {
|
| + void VisitExpressionStatement(ExpressionStatement* stmt) {
|
| RECURSE(Visit(stmt->expression()));
|
| }
|
|
|
| - void VisitEmptyStatement(EmptyStatement* stmt) override {}
|
| + void VisitEmptyStatement(EmptyStatement* stmt) {}
|
|
|
| - void VisitEmptyParentheses(EmptyParentheses* paren) override {
|
| - UNREACHABLE();
|
| - }
|
| + void VisitEmptyParentheses(EmptyParentheses* paren) { UNREACHABLE(); }
|
|
|
| - void VisitIfStatement(IfStatement* stmt) override {
|
| + void VisitIfStatement(IfStatement* stmt) {
|
| DCHECK_EQ(kFuncScope, scope_);
|
| RECURSE(Visit(stmt->condition()));
|
| current_function_builder_->Emit(kExprIf);
|
| @@ -213,7 +211,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| breakable_blocks_.pop_back();
|
| }
|
|
|
| - void VisitContinueStatement(ContinueStatement* stmt) override {
|
| + void VisitContinueStatement(ContinueStatement* stmt) {
|
| DCHECK_EQ(kFuncScope, scope_);
|
| DCHECK_NOT_NULL(stmt->target());
|
| int i = static_cast<int>(breakable_blocks_.size()) - 1;
|
| @@ -234,7 +232,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| current_function_builder_->EmitVarInt(block_distance);
|
| }
|
|
|
| - void VisitBreakStatement(BreakStatement* stmt) override {
|
| + void VisitBreakStatement(BreakStatement* stmt) {
|
| DCHECK_EQ(kFuncScope, scope_);
|
| DCHECK_NOT_NULL(stmt->target());
|
| int i = static_cast<int>(breakable_blocks_.size()) - 1;
|
| @@ -257,7 +255,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| current_function_builder_->EmitVarInt(block_distance);
|
| }
|
|
|
| - void VisitReturnStatement(ReturnStatement* stmt) override {
|
| + void VisitReturnStatement(ReturnStatement* stmt) {
|
| if (scope_ == kModuleScope) {
|
| scope_ = kExportScope;
|
| RECURSE(Visit(stmt->expression()));
|
| @@ -272,7 +270,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitWithStatement(WithStatement* stmt) override { UNREACHABLE(); }
|
| + void VisitWithStatement(WithStatement* stmt) { UNREACHABLE(); }
|
|
|
| void HandleCase(CaseNode* node,
|
| const ZoneMap<int, unsigned int>& case_to_block,
|
| @@ -340,7 +338,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitSwitchStatement(SwitchStatement* stmt) override {
|
| + void VisitSwitchStatement(SwitchStatement* stmt) {
|
| VariableProxy* tag = stmt->tag()->AsVariableProxy();
|
| DCHECK_NOT_NULL(tag);
|
| ZoneList<CaseClause*>* clauses = stmt->cases();
|
| @@ -392,9 +390,9 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitCaseClause(CaseClause* clause) override { UNREACHABLE(); }
|
| + void VisitCaseClause(CaseClause* clause) { UNREACHABLE(); }
|
|
|
| - void VisitDoWhileStatement(DoWhileStatement* stmt) override {
|
| + void VisitDoWhileStatement(DoWhileStatement* stmt) {
|
| DCHECK_EQ(kFuncScope, scope_);
|
| BlockVisitor visitor(this, stmt->AsBreakableStatement(), kExprLoop, true);
|
| RECURSE(Visit(stmt->body()));
|
| @@ -404,7 +402,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| current_function_builder_->Emit(kExprEnd);
|
| }
|
|
|
| - void VisitWhileStatement(WhileStatement* stmt) override {
|
| + void VisitWhileStatement(WhileStatement* stmt) {
|
| DCHECK_EQ(kFuncScope, scope_);
|
| BlockVisitor visitor(this, stmt->AsBreakableStatement(), kExprLoop, true);
|
| RECURSE(Visit(stmt->cond()));
|
| @@ -416,7 +414,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| breakable_blocks_.pop_back();
|
| }
|
|
|
| - void VisitForStatement(ForStatement* stmt) override {
|
| + void VisitForStatement(ForStatement* stmt) {
|
| DCHECK_EQ(kFuncScope, scope_);
|
| if (stmt->init() != nullptr) {
|
| RECURSE(Visit(stmt->init()));
|
| @@ -440,23 +438,17 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| current_function_builder_->EmitWithU8U8(kExprBr, ARITY_0, 0);
|
| }
|
|
|
| - void VisitForInStatement(ForInStatement* stmt) override { UNREACHABLE(); }
|
| + void VisitForInStatement(ForInStatement* stmt) { UNREACHABLE(); }
|
|
|
| - void VisitForOfStatement(ForOfStatement* stmt) override { UNREACHABLE(); }
|
| + void VisitForOfStatement(ForOfStatement* stmt) { UNREACHABLE(); }
|
|
|
| - void VisitTryCatchStatement(TryCatchStatement* stmt) override {
|
| - UNREACHABLE();
|
| - }
|
| + void VisitTryCatchStatement(TryCatchStatement* stmt) { UNREACHABLE(); }
|
|
|
| - void VisitTryFinallyStatement(TryFinallyStatement* stmt) override {
|
| - UNREACHABLE();
|
| - }
|
| + void VisitTryFinallyStatement(TryFinallyStatement* stmt) { UNREACHABLE(); }
|
|
|
| - void VisitDebuggerStatement(DebuggerStatement* stmt) override {
|
| - UNREACHABLE();
|
| - }
|
| + void VisitDebuggerStatement(DebuggerStatement* stmt) { UNREACHABLE(); }
|
|
|
| - void VisitFunctionLiteral(FunctionLiteral* expr) override {
|
| + void VisitFunctionLiteral(FunctionLiteral* expr) {
|
| Scope* scope = expr->scope();
|
| if (scope_ == kFuncScope) {
|
| if (bounds_->get(expr).lower->IsFunction()) {
|
| @@ -481,11 +473,11 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| RECURSE(VisitDeclarations(scope->declarations()));
|
| }
|
|
|
| - void VisitNativeFunctionLiteral(NativeFunctionLiteral* expr) override {
|
| + void VisitNativeFunctionLiteral(NativeFunctionLiteral* expr) {
|
| UNREACHABLE();
|
| }
|
|
|
| - void VisitConditional(Conditional* expr) override {
|
| + void VisitConditional(Conditional* expr) {
|
| DCHECK_EQ(kFuncScope, scope_);
|
| RECURSE(Visit(expr->condition()));
|
| // WASM ifs come with implicit blocks for both arms.
|
| @@ -550,7 +542,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| return true;
|
| }
|
|
|
| - void VisitVariableProxy(VariableProxy* expr) override {
|
| + void VisitVariableProxy(VariableProxy* expr) {
|
| if (scope_ == kFuncScope || scope_ == kInitScope) {
|
| Variable* var = expr->var();
|
| if (VisitStdlibConstant(var)) {
|
| @@ -568,7 +560,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitLiteral(Literal* expr) override {
|
| + void VisitLiteral(Literal* expr) {
|
| Handle<Object> value = expr->value();
|
| if (!value->IsNumber() || (scope_ != kFuncScope && scope_ != kInitScope)) {
|
| return;
|
| @@ -598,9 +590,9 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitRegExpLiteral(RegExpLiteral* expr) override { UNREACHABLE(); }
|
| + void VisitRegExpLiteral(RegExpLiteral* expr) { UNREACHABLE(); }
|
|
|
| - void VisitObjectLiteral(ObjectLiteral* expr) override {
|
| + void VisitObjectLiteral(ObjectLiteral* expr) {
|
| ZoneList<ObjectLiteralProperty*>* props = expr->properties();
|
| for (int i = 0; i < props->length(); ++i) {
|
| ObjectLiteralProperty* prop = props->at(i);
|
| @@ -622,7 +614,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitArrayLiteral(ArrayLiteral* expr) override { UNREACHABLE(); }
|
| + void VisitArrayLiteral(ArrayLiteral* expr) { UNREACHABLE(); }
|
|
|
| void LoadInitFunction() {
|
| current_function_builder_ = builder_->FunctionAt(init_function_index_);
|
| @@ -837,7 +829,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitAssignment(Assignment* expr) override {
|
| + void VisitAssignment(Assignment* expr) {
|
| bool as_init = false;
|
| if (scope_ == kModuleScope) {
|
| Property* prop = expr->value()->AsProperty();
|
| @@ -884,9 +876,9 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| if (as_init) UnLoadInitFunction();
|
| }
|
|
|
| - void VisitYield(Yield* expr) override { UNREACHABLE(); }
|
| + void VisitYield(Yield* expr) { UNREACHABLE(); }
|
|
|
| - void VisitThrow(Throw* expr) override { UNREACHABLE(); }
|
| + void VisitThrow(Throw* expr) { UNREACHABLE(); }
|
|
|
| void VisitForeignVariable(bool is_float, Variable* var, Property* expr) {
|
| DCHECK(expr->obj()->AsVariableProxy());
|
| @@ -974,7 +966,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| UNREACHABLE();
|
| }
|
|
|
| - void VisitProperty(Property* expr) override {
|
| + void VisitProperty(Property* expr) {
|
| MachineType type;
|
| VisitPropertyAndEmitIndex(expr, &type);
|
| WasmOpcode opcode;
|
| @@ -1262,7 +1254,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitCall(Call* expr) override {
|
| + void VisitCall(Call* expr) {
|
| Call::CallType call_type = expr->GetCallType(isolate_);
|
| switch (call_type) {
|
| case Call::OTHER_CALL: {
|
| @@ -1323,11 +1315,11 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitCallNew(CallNew* expr) override { UNREACHABLE(); }
|
| + void VisitCallNew(CallNew* expr) { UNREACHABLE(); }
|
|
|
| - void VisitCallRuntime(CallRuntime* expr) override { UNREACHABLE(); }
|
| + void VisitCallRuntime(CallRuntime* expr) { UNREACHABLE(); }
|
|
|
| - void VisitUnaryOperation(UnaryOperation* expr) override {
|
| + void VisitUnaryOperation(UnaryOperation* expr) {
|
| RECURSE(Visit(expr->expression()));
|
| switch (expr->op()) {
|
| case Token::NOT: {
|
| @@ -1340,7 +1332,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitCountOperation(CountOperation* expr) override { UNREACHABLE(); }
|
| + void VisitCountOperation(CountOperation* expr) { UNREACHABLE(); }
|
|
|
| bool MatchIntBinaryOperation(BinaryOperation* expr, Token::Value op,
|
| int32_t val) {
|
| @@ -1477,7 +1469,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitBinaryOperation(BinaryOperation* expr) override {
|
| + void VisitBinaryOperation(BinaryOperation* expr) {
|
| ConvertOperation convertOperation = MatchBinaryOperation(expr);
|
| if (convertOperation == kToDouble) {
|
| RECURSE(Visit(expr->left()));
|
| @@ -1555,7 +1547,7 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| }
|
| }
|
|
|
| - void VisitCompareOperation(CompareOperation* expr) override {
|
| + void VisitCompareOperation(CompareOperation* expr) {
|
| RECURSE(Visit(expr->left()));
|
| RECURSE(Visit(expr->right()));
|
| switch (expr->op()) {
|
| @@ -1626,37 +1618,32 @@ class AsmWasmBuilderImpl : public AstVisitor {
|
| #undef SIGNED
|
| #undef NON_SIGNED
|
|
|
| - void VisitThisFunction(ThisFunction* expr) override { UNREACHABLE(); }
|
| + void VisitThisFunction(ThisFunction* expr) { UNREACHABLE(); }
|
|
|
| - void VisitDeclarations(ZoneList<Declaration*>* decls) override {
|
| + void VisitDeclarations(ZoneList<Declaration*>* decls) {
|
| for (int i = 0; i < decls->length(); ++i) {
|
| Declaration* decl = decls->at(i);
|
| RECURSE(Visit(decl));
|
| }
|
| }
|
|
|
| - void VisitClassLiteral(ClassLiteral* expr) override { UNREACHABLE(); }
|
| + void VisitClassLiteral(ClassLiteral* expr) { UNREACHABLE(); }
|
|
|
| - void VisitSpread(Spread* expr) override { UNREACHABLE(); }
|
| + void VisitSpread(Spread* expr) { UNREACHABLE(); }
|
|
|
| - void VisitSuperPropertyReference(SuperPropertyReference* expr) override {
|
| + void VisitSuperPropertyReference(SuperPropertyReference* expr) {
|
| UNREACHABLE();
|
| }
|
|
|
| - void VisitSuperCallReference(SuperCallReference* expr) override {
|
| - UNREACHABLE();
|
| - }
|
| + void VisitSuperCallReference(SuperCallReference* expr) { UNREACHABLE(); }
|
|
|
| - void VisitSloppyBlockFunctionStatement(
|
| - SloppyBlockFunctionStatement* expr) override {
|
| + void VisitSloppyBlockFunctionStatement(SloppyBlockFunctionStatement* expr) {
|
| UNREACHABLE();
|
| }
|
|
|
| - void VisitDoExpression(DoExpression* expr) override { UNREACHABLE(); }
|
| + void VisitDoExpression(DoExpression* expr) { UNREACHABLE(); }
|
|
|
| - void VisitRewritableExpression(RewritableExpression* expr) override {
|
| - UNREACHABLE();
|
| - }
|
| + void VisitRewritableExpression(RewritableExpression* expr) { UNREACHABLE(); }
|
|
|
| struct IndexContainer : public ZoneObject {
|
| uint32_t index;
|
|
|