Lines Matching refs:node
27 bool Renumber(FunctionLiteral* node);
30 // AST node visitor interface.
31 #define DEFINE_VISIT(type) void Visit##type(type* node) override;
35 void VisitVariableProxyReference(VariableProxy* node);
36 void VisitPropertyReference(Property* node);
67 template <typename Node>
68 void ReserveFeedbackSlots(Node* node) {
69 node->AssignFeedbackVectorSlots(isolate_, properties_.get_spec(),
89 void AstNumberingVisitor::VisitVariableDeclaration(VariableDeclaration* node) {
91 VisitVariableProxy(node->proxy());
95 void AstNumberingVisitor::VisitExportDeclaration(ExportDeclaration* node) {
98 VisitVariableProxy(node->proxy());
102 void AstNumberingVisitor::VisitEmptyStatement(EmptyStatement* node) {
108 SloppyBlockFunctionStatement* node) {
110 Visit(node->statement());
114 void AstNumberingVisitor::VisitContinueStatement(ContinueStatement* node) {
119 void AstNumberingVisitor::VisitBreakStatement(BreakStatement* node) {
124 void AstNumberingVisitor::VisitDebuggerStatement(DebuggerStatement* node) {
127 node->set_base_id(ReserveIdRange(DebuggerStatement::num_ids()));
132 NativeFunctionLiteral* node) {
135 node->set_base_id(ReserveIdRange(NativeFunctionLiteral::num_ids()));
139 void AstNumberingVisitor::VisitDoExpression(DoExpression* node) {
141 node->set_base_id(ReserveIdRange(DoExpression::num_ids()));
142 Visit(node->block());
143 Visit(node->result());
147 void AstNumberingVisitor::VisitLiteral(Literal* node) {
149 node->set_base_id(ReserveIdRange(Literal::num_ids()));
153 void AstNumberingVisitor::VisitRegExpLiteral(RegExpLiteral* node) {
155 node->set_base_id(ReserveIdRange(RegExpLiteral::num_ids()));
159 void AstNumberingVisitor::VisitVariableProxyReference(VariableProxy* node) {
161 if (node->var()->IsLookupSlot()) {
164 node->set_base_id(ReserveIdRange(VariableProxy::num_ids()));
168 void AstNumberingVisitor::VisitVariableProxy(VariableProxy* node) {
169 VisitVariableProxyReference(node);
170 ReserveFeedbackSlots(node);
174 void AstNumberingVisitor::VisitThisFunction(ThisFunction* node) {
176 node->set_base_id(ReserveIdRange(ThisFunction::num_ids()));
181 SuperPropertyReference* node) {
184 node->set_base_id(ReserveIdRange(SuperPropertyReference::num_ids()));
185 Visit(node->this_var());
186 Visit(node->home_object());
190 void AstNumberingVisitor::VisitSuperCallReference(SuperCallReference* node) {
193 node->set_base_id(ReserveIdRange(SuperCallReference::num_ids()));
194 Visit(node->this_var());
195 Visit(node->new_target_var());
196 Visit(node->this_function_var());
200 void AstNumberingVisitor::VisitImportDeclaration(ImportDeclaration* node) {
203 VisitVariableProxy(node->proxy());
207 void AstNumberingVisitor::VisitExpressionStatement(ExpressionStatement* node) {
209 Visit(node->expression());
213 void AstNumberingVisitor::VisitReturnStatement(ReturnStatement* node) {
215 Visit(node->expression());
219 void AstNumberingVisitor::VisitYield(Yield* node) {
220 node->set_yield_id(yield_count_);
223 ReserveFeedbackSlots(node);
224 node->set_base_id(ReserveIdRange(Yield::num_ids()));
225 Visit(node->generator_object());
226 Visit(node->expression());
230 void AstNumberingVisitor::VisitThrow(Throw* node) {
232 node->set_base_id(ReserveIdRange(Throw::num_ids()));
233 Visit(node->exception());
237 void AstNumberingVisitor::VisitUnaryOperation(UnaryOperation* node) {
239 node->set_base_id(ReserveIdRange(UnaryOperation::num_ids()));
240 Visit(node->expression());
244 void AstNumberingVisitor::VisitCountOperation(CountOperation* node) {
246 node->set_base_id(ReserveIdRange(CountOperation::num_ids()));
247 Visit(node->expression());
248 ReserveFeedbackSlots(node);
252 void AstNumberingVisitor::VisitBlock(Block* node) {
254 node->set_base_id(ReserveIdRange(Block::num_ids()));
255 if (node->scope() != NULL) VisitDeclarations(node->scope()->declarations());
256 VisitStatements(node->statements());
260 void AstNumberingVisitor::VisitFunctionDeclaration(FunctionDeclaration* node) {
262 VisitVariableProxy(node->proxy());
263 VisitFunctionLiteral(node->fun());
267 void AstNumberingVisitor::VisitCallRuntime(CallRuntime* node) {
269 ReserveFeedbackSlots(node);
270 node->set_base_id(ReserveIdRange(CallRuntime::num_ids()));
271 VisitArguments(node->arguments());
275 void AstNumberingVisitor::VisitWithStatement(WithStatement* node) {
278 node->set_base_id(ReserveIdRange(WithStatement::num_ids()));
279 Visit(node->expression());
280 Visit(node->statement());
284 void AstNumberingVisitor::VisitDoWhileStatement(DoWhileStatement* node) {
287 node->set_base_id(ReserveIdRange(DoWhileStatement::num_ids()));
288 node->set_first_yield_id(yield_count_);
289 Visit(node->body());
290 Visit(node->cond());
291 node->set_yield_count(yield_count_ - node->first_yield_id());
295 void AstNumberingVisitor::VisitWhileStatement(WhileStatement* node) {
298 node->set_base_id(ReserveIdRange(WhileStatement::num_ids()));
299 node->set_first_yield_id(yield_count_);
300 Visit(node->cond());
301 Visit(node->body());
302 node->set_yield_count(yield_count_ - node->first_yield_id());
306 void AstNumberingVisitor::VisitTryCatchStatement(TryCatchStatement* node) {
309 Visit(node->try_block());
310 Visit(node->catch_block());
314 void AstNumberingVisitor::VisitTryFinallyStatement(TryFinallyStatement* node) {
317 Visit(node->try_block());
318 Visit(node->finally_block());
322 void AstNumberingVisitor::VisitPropertyReference(Property* node) {
324 node->set_base_id(ReserveIdRange(Property::num_ids()));
325 Visit(node->key());
326 Visit(node->obj());
340 void AstNumberingVisitor::VisitProperty(Property* node) {
341 VisitPropertyReference(node);
342 ReserveFeedbackSlots(node);
346 void AstNumberingVisitor::VisitAssignment(Assignment* node) {
348 node->set_base_id(ReserveIdRange(Assignment::num_ids()));
350 if (node->is_compound()) VisitBinaryOperation(node->binary_operation());
351 VisitReference(node->target());
352 Visit(node->value());
353 ReserveFeedbackSlots(node);
357 void AstNumberingVisitor::VisitBinaryOperation(BinaryOperation* node) {
359 node->set_base_id(ReserveIdRange(BinaryOperation::num_ids()));
360 Visit(node->left());
361 Visit(node->right());
365 void AstNumberingVisitor::VisitCompareOperation(CompareOperation* node) {
367 node->set_base_id(ReserveIdRange(CompareOperation::num_ids()));
368 Visit(node->left());
369 Visit(node->right());
373 void AstNumberingVisitor::VisitSpread(Spread* node) { UNREACHABLE(); }
376 void AstNumberingVisitor::VisitEmptyParentheses(EmptyParentheses* node) {
381 void AstNumberingVisitor::VisitForInStatement(ForInStatement* node) {
384 node->set_base_id(ReserveIdRange(ForInStatement::num_ids()));
385 Visit(node->enumerable()); // Not part of loop.
386 node->set_first_yield_id(yield_count_);
387 Visit(node->each());
388 Visit(node->body());
389 node->set_yield_count(yield_count_ - node->first_yield_id());
390 ReserveFeedbackSlots(node);
394 void AstNumberingVisitor::VisitForOfStatement(ForOfStatement* node) {
397 node->set_base_id(ReserveIdRange(ForOfStatement::num_ids()));
398 Visit(node->assign_iterator()); // Not part of loop.
399 node->set_first_yield_id(yield_count_);
400 Visit(node->next_result());
401 Visit(node->result_done());
402 Visit(node->assign_each());
403 Visit(node->body());
404 node->set_yield_count(yield_count_ - node->first_yield_id());
405 ReserveFeedbackSlots(node);
409 void AstNumberingVisitor::VisitConditional(Conditional* node) {
411 node->set_base_id(ReserveIdRange(Conditional::num_ids()));
412 Visit(node->condition());
413 Visit(node->then_expression());
414 Visit(node->else_expression());
418 void AstNumberingVisitor::VisitIfStatement(IfStatement* node) {
420 node->set_base_id(ReserveIdRange(IfStatement::num_ids()));
421 Visit(node->condition());
422 Visit(node->then_statement());
423 if (node->HasElseStatement()) {
424 Visit(node->else_statement());
429 void AstNumberingVisitor::VisitSwitchStatement(SwitchStatement* node) {
431 node->set_base_id(ReserveIdRange(SwitchStatement::num_ids()));
432 Visit(node->tag());
433 ZoneList<CaseClause*>* cases = node->cases();
440 void AstNumberingVisitor::VisitCaseClause(CaseClause* node) {
442 node->set_base_id(ReserveIdRange(CaseClause::num_ids()));
443 if (!node->is_default()) Visit(node->label());
444 VisitStatements(node->statements());
448 void AstNumberingVisitor::VisitForStatement(ForStatement* node) {
451 node->set_base_id(ReserveIdRange(ForStatement::num_ids()));
452 if (node->init() != NULL) Visit(node->init()); // Not part of loop.
453 node->set_first_yield_id(yield_count_);
454 if (node->cond() != NULL) Visit(node->cond());
455 if (node->next() != NULL) Visit(node->next());
456 Visit(node->body());
457 node->set_yield_count(yield_count_ - node->first_yield_id());
461 void AstNumberingVisitor::VisitClassLiteral(ClassLiteral* node) {
464 node->set_base_id(ReserveIdRange(node->num_ids()));
465 if (node->extends()) Visit(node->extends());
466 if (node->constructor()) Visit(node->constructor());
467 if (node->class_variable_proxy()) {
468 VisitVariableProxy(node->class_variable_proxy());
470 for (int i = 0; i < node->properties()->length(); i++) {
471 VisitObjectLiteralProperty(node->properties()->at(i));
473 ReserveFeedbackSlots(node);
477 void AstNumberingVisitor::VisitObjectLiteral(ObjectLiteral* node) {
479 node->set_base_id(ReserveIdRange(node->num_ids()));
480 for (int i = 0; i < node->properties()->length(); i++) {
481 VisitObjectLiteralProperty(node->properties()->at(i));
483 node->BuildConstantProperties(isolate_);
487 node->CalculateEmitStore(zone_);
488 ReserveFeedbackSlots(node);
493 ObjectLiteralProperty* node) {
494 if (node->is_computed_name()) DisableCrankshaft(kComputedPropertyName);
495 Visit(node->key());
496 Visit(node->value());
500 void AstNumberingVisitor::VisitArrayLiteral(ArrayLiteral* node) {
502 node->set_base_id(ReserveIdRange(node->num_ids()));
503 for (int i = 0; i < node->values()->length(); i++) {
504 Visit(node->values()->at(i));
506 node->BuildConstantElements(isolate_);
507 ReserveFeedbackSlots(node);
511 void AstNumberingVisitor::VisitCall(Call* node) {
513 ReserveFeedbackSlots(node);
514 node->set_base_id(ReserveIdRange(Call::num_ids()));
515 Visit(node->expression());
516 VisitArguments(node->arguments());
520 void AstNumberingVisitor::VisitCallNew(CallNew* node) {
522 ReserveFeedbackSlots(node);
523 node->set_base_id(ReserveIdRange(CallNew::num_ids()));
524 Visit(node->expression());
525 VisitArguments(node->arguments());
552 void AstNumberingVisitor::VisitFunctionLiteral(FunctionLiteral* node) {
554 node->set_base_id(ReserveIdRange(FunctionLiteral::num_ids()));
561 RewritableExpression* node) {
563 node->set_base_id(ReserveIdRange(RewritableExpression::num_ids()));
564 Visit(node->expression());
568 bool AstNumberingVisitor::Renumber(FunctionLiteral* node) {
569 Scope* scope = node->scope();
581 if (IsGeneratorFunction(node->kind()) || IsAsyncFunction(node->kind())) {
589 VisitStatements(node->body());
591 node->set_ast_properties(&properties_);
592 node->set_dont_optimize_reason(dont_optimize_reason());
593 node->set_yield_count(yield_count_);