blob: 7536d90ca8e7f21acf3d91db96f2336f3a516b7b [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// Copyright 2015 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "src/v8.h"
6
7#include "src/ast/ast-expression-visitor.h"
8
9#include "src/ast/ast.h"
10#include "src/ast/scopes.h"
11#include "src/codegen.h"
12
13namespace v8 {
14namespace internal {
15
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000016AstExpressionVisitor::AstExpressionVisitor(Isolate* isolate, Expression* root)
Ben Murdoch61f157c2016-09-16 13:49:30 +010017 : AstTraversalVisitor(isolate), root_(root) {}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000018
19AstExpressionVisitor::AstExpressionVisitor(uintptr_t stack_limit,
20 Expression* root)
Ben Murdoch61f157c2016-09-16 13:49:30 +010021 : AstTraversalVisitor(stack_limit), root_(root) {}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000022
Ben Murdoch61f157c2016-09-16 13:49:30 +010023void AstExpressionVisitor::Run() { Visit(root_); }
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000024
25void AstExpressionVisitor::VisitFunctionLiteral(FunctionLiteral* expr) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000026 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010027 AstTraversalVisitor::VisitFunctionLiteral(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000028}
29
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000030void AstExpressionVisitor::VisitNativeFunctionLiteral(
Ben Murdoch61f157c2016-09-16 13:49:30 +010031 NativeFunctionLiteral* expr) {
32 AstTraversalVisitor::VisitNativeFunctionLiteral(expr);
33}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000034
35void AstExpressionVisitor::VisitDoExpression(DoExpression* expr) {
Ben Murdoch097c5b22016-05-18 11:27:45 +010036 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010037 AstTraversalVisitor::VisitDoExpression(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000038}
39
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000040void AstExpressionVisitor::VisitConditional(Conditional* expr) {
41 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010042 AstTraversalVisitor::VisitConditional(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000043}
44
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000045void AstExpressionVisitor::VisitVariableProxy(VariableProxy* expr) {
46 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010047 AstTraversalVisitor::VisitVariableProxy(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000048}
49
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000050void AstExpressionVisitor::VisitLiteral(Literal* expr) {
51 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010052 AstTraversalVisitor::VisitLiteral(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000053}
54
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000055void AstExpressionVisitor::VisitRegExpLiteral(RegExpLiteral* expr) {
56 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010057 AstTraversalVisitor::VisitRegExpLiteral(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000058}
59
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000060void AstExpressionVisitor::VisitObjectLiteral(ObjectLiteral* expr) {
61 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010062 AstTraversalVisitor::VisitObjectLiteral(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000063}
64
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000065void AstExpressionVisitor::VisitArrayLiteral(ArrayLiteral* expr) {
66 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010067 AstTraversalVisitor::VisitArrayLiteral(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000068}
69
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000070void AstExpressionVisitor::VisitAssignment(Assignment* expr) {
71 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010072 AstTraversalVisitor::VisitAssignment(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000073}
74
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000075void AstExpressionVisitor::VisitYield(Yield* expr) {
76 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010077 AstTraversalVisitor::VisitYield(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000078}
79
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000080void AstExpressionVisitor::VisitThrow(Throw* expr) {
81 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010082 AstTraversalVisitor::VisitThrow(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000083}
84
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000085void AstExpressionVisitor::VisitProperty(Property* expr) {
86 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010087 AstTraversalVisitor::VisitProperty(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000088}
89
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000090void AstExpressionVisitor::VisitCall(Call* expr) {
91 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010092 AstTraversalVisitor::VisitCall(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000093}
94
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000095void AstExpressionVisitor::VisitCallNew(CallNew* expr) {
96 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +010097 AstTraversalVisitor::VisitCallNew(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000098}
99
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000100void AstExpressionVisitor::VisitCallRuntime(CallRuntime* expr) {
101 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100102 AstTraversalVisitor::VisitCallRuntime(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000103}
104
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000105void AstExpressionVisitor::VisitUnaryOperation(UnaryOperation* expr) {
106 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100107 AstTraversalVisitor::VisitUnaryOperation(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000108}
109
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000110void AstExpressionVisitor::VisitCountOperation(CountOperation* expr) {
111 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100112 AstTraversalVisitor::VisitCountOperation(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000113}
114
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000115void AstExpressionVisitor::VisitBinaryOperation(BinaryOperation* expr) {
116 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100117 AstTraversalVisitor::VisitBinaryOperation(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000118}
119
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000120void AstExpressionVisitor::VisitCompareOperation(CompareOperation* expr) {
121 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100122 AstTraversalVisitor::VisitCompareOperation(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000123}
124
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000125void AstExpressionVisitor::VisitThisFunction(ThisFunction* expr) {
126 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100127 AstTraversalVisitor::VisitThisFunction(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000128}
129
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000130void AstExpressionVisitor::VisitClassLiteral(ClassLiteral* expr) {
131 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100132 AstTraversalVisitor::VisitClassLiteral(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000133}
134
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000135void AstExpressionVisitor::VisitSpread(Spread* expr) {
136 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100137 AstTraversalVisitor::VisitSpread(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000138}
139
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000140void AstExpressionVisitor::VisitSuperPropertyReference(
141 SuperPropertyReference* expr) {
142 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100143 AstTraversalVisitor::VisitSuperPropertyReference(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000144}
145
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000146void AstExpressionVisitor::VisitSuperCallReference(SuperCallReference* expr) {
147 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100148 AstTraversalVisitor::VisitSuperCallReference(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000149}
150
Ben Murdoch61f157c2016-09-16 13:49:30 +0100151void AstExpressionVisitor::VisitCaseClause(CaseClause* expr) {
152 AstTraversalVisitor::VisitCaseClause(expr);
153}
154
155void AstExpressionVisitor::VisitEmptyParentheses(EmptyParentheses* expr) {
156 AstTraversalVisitor::VisitEmptyParentheses(expr);
157}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000158
Ben Murdoch097c5b22016-05-18 11:27:45 +0100159void AstExpressionVisitor::VisitRewritableExpression(
160 RewritableExpression* expr) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000161 VisitExpression(expr);
Ben Murdoch61f157c2016-09-16 13:49:30 +0100162 AstTraversalVisitor::VisitRewritableExpression(expr);
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000163}
164
165
166} // namespace internal
167} // namespace v8