Home | History | Annotate | Download | only in ast

Lines Matching refs:node

32   bool Renumber(FunctionLiteral* node);
35 // AST node visitor interface.
36 #define DEFINE_VISIT(type) void Visit##type(type* node);
40 void VisitVariableProxy(VariableProxy* node, TypeofMode typeof_mode);
41 void VisitVariableProxyReference(VariableProxy* node);
42 void VisitPropertyReference(Property* node);
45 void VisitStatementsAndDeclarations(Block* node);
70 template <typename Node>
71 void ReserveFeedbackSlots(Node* node) {
72 node->AssignFeedbackSlots(properties_.get_spec(), language_mode_,
110 void AstNumberingVisitor::VisitVariableDeclaration(VariableDeclaration* node) {
112 VisitVariableProxy(node->proxy());
116 void AstNumberingVisitor::VisitEmptyStatement(EmptyStatement* node) {
122 SloppyBlockFunctionStatement* node) {
124 Visit(node->statement());
128 void AstNumberingVisitor::VisitContinueStatement(ContinueStatement* node) {
133 void AstNumberingVisitor::VisitBreakStatement(BreakStatement* node) {
138 void AstNumberingVisitor::VisitDebuggerStatement(DebuggerStatement* node) {
145 NativeFunctionLiteral* node) {
148 node->set_base_id(ReserveIdRange(NativeFunctionLiteral::num_ids()));
149 ReserveFeedbackSlots(node);
153 void AstNumberingVisitor::VisitDoExpression(DoExpression* node) {
155 node->set_base_id(ReserveIdRange(DoExpression::num_ids()));
156 Visit(node->block());
157 Visit(node->result());
161 void AstNumberingVisitor::VisitLiteral(Literal* node) {
163 node->set_base_id(ReserveIdRange(Literal::num_ids()));
167 void AstNumberingVisitor::VisitRegExpLiteral(RegExpLiteral* node) {
169 node->set_base_id(ReserveIdRange(RegExpLiteral::num_ids()));
170 ReserveFeedbackSlots(node);
174 void AstNumberingVisitor::VisitVariableProxyReference(VariableProxy* node) {
176 switch (node->var()->location()) {
187 node->set_base_id(ReserveIdRange(VariableProxy::num_ids()));
190 void AstNumberingVisitor::VisitVariableProxy(VariableProxy* node,
192 VisitVariableProxyReference(node);
193 node->AssignFeedbackSlots(properties_.get_spec(), typeof_mode, &slot_cache_);
196 void AstNumberingVisitor::VisitVariableProxy(VariableProxy* node) {
197 VisitVariableProxy(node, NOT_INSIDE_TYPEOF);
201 void AstNumberingVisitor::VisitThisFunction(ThisFunction* node) {
203 node->set_base_id(ReserveIdRange(ThisFunction::num_ids()));
208 SuperPropertyReference* node) {
211 node->set_base_id(ReserveIdRange(SuperPropertyReference::num_ids()));
212 Visit(node->this_var());
213 Visit(node->home_object());
217 void AstNumberingVisitor::VisitSuperCallReference(SuperCallReference* node) {
220 node->set_base_id(ReserveIdRange(SuperCallReference::num_ids()));
221 Visit(node->this_var());
222 Visit(node->new_target_var());
223 Visit(node->this_function_var());
227 void AstNumberingVisitor::VisitExpressionStatement(ExpressionStatement* node) {
229 Visit(node->expression());
233 void AstNumberingVisitor::VisitReturnStatement(ReturnStatement* node) {
235 Visit(node->expression());
237 DCHECK(!node->is_async_return() ||
242 void AstNumberingVisitor::VisitYield(Yield* node) {
243 node->set_yield_id(yield_count_);
246 node->set_base_id(ReserveIdRange(Yield::num_ids()));
247 Visit(node->generator_object());
248 Visit(node->expression());
252 void AstNumberingVisitor::VisitThrow(Throw* node) {
254 node->set_base_id(ReserveIdRange(Throw::num_ids()));
255 Visit(node->exception());
259 void AstNumberingVisitor::VisitUnaryOperation(UnaryOperation* node) {
261 node->set_base_id(ReserveIdRange(UnaryOperation::num_ids()));
262 if ((node->op() == Token::TYPEOF) && node->expression()->IsVariableProxy()) {
263 VariableProxy* proxy = node->expression()->AsVariableProxy();
266 Visit(node->expression());
271 void AstNumberingVisitor::VisitCountOperation(CountOperation* node) {
273 node->set_base_id(ReserveIdRange(CountOperation::num_ids()));
274 Visit(node->expression());
275 ReserveFeedbackSlots(node);
279 void AstNumberingVisitor::VisitBlock(Block* node) {
281 node->set_base_id(ReserveIdRange(Block::num_ids()));
282 Scope* scope = node->scope();
285 VisitStatementsAndDeclarations(node);
287 VisitStatementsAndDeclarations(node);
291 void AstNumberingVisitor::VisitStatementsAndDeclarations(Block* node) {
292 Scope* scope = node->scope();
295 VisitStatements(node->statements());
298 void AstNumberingVisitor::VisitFunctionDeclaration(FunctionDeclaration* node) {
300 VisitVariableProxy(node->proxy());
301 VisitFunctionLiteral(node->fun());
305 void AstNumberingVisitor::VisitCallRuntime(CallRuntime* node) {
307 node->set_base_id(ReserveIdRange(CallRuntime::num_ids()));
308 VisitArguments(node->arguments());
325 if (node->is_jsruntime() &&
326 node->context_index() == Context::ASYNC_FUNCTION_AWAIT_CAUGHT_INDEX &&
328 node->set_context_index(Context::ASYNC_FUNCTION_AWAIT_UNCAUGHT_INDEX);
333 void AstNumberingVisitor::VisitWithStatement(WithStatement* node) {
336 Visit(node->expression());
337 Visit(node->statement());
341 void AstNumberingVisitor::VisitDoWhileStatement(DoWhileStatement* node) {
344 node->set_base_id(ReserveIdRange(DoWhileStatement::num_ids()));
345 node->set_first_yield_id(yield_count_);
346 Visit(node->body());
347 Visit(node->cond());
348 node->set_yield_count(yield_count_ - node->first_yield_id());
352 void AstNumberingVisitor::VisitWhileStatement(WhileStatement* node) {
355 node->set_base_id(ReserveIdRange(WhileStatement::num_ids()));
356 node->set_first_yield_id(yield_count_);
357 Visit(node->cond());
358 Visit(node->body());
359 node->set_yield_count(yield_count_ - node->first_yield_id());
363 void AstNumberingVisitor::VisitTryCatchStatement(TryCatchStatement* node) {
364 DCHECK(node->scope() == nullptr || !node->scope()->HasBeenRemoved());
369 // This node uses its own prediction, unless it's "uncaught", in which case
371 HandlerTable::CatchPrediction catch_prediction = node->catch_prediction();
375 node->set_catch_prediction(catch_prediction_);
376 Visit(node->try_block());
379 Visit(node->catch_block());
383 void AstNumberingVisitor::VisitTryFinallyStatement(TryFinallyStatement* node) {
388 node->set_catch_prediction(catch_prediction_);
389 Visit(node->try_block());
390 Visit(node->finally_block());
394 void AstNumberingVisitor::VisitPropertyReference(Property* node) {
396 node->set_base_id(ReserveIdRange(Property::num_ids()));
397 Visit(node->key());
398 Visit(node->obj());
412 void AstNumberingVisitor::VisitProperty(Property* node) {
413 VisitPropertyReference(node);
414 ReserveFeedbackSlots(node);
418 void AstNumberingVisitor::VisitAssignment(Assignment* node) {
420 node->set_base_id(ReserveIdRange(Assignment::num_ids()));
422 if (node->is_compound()) VisitBinaryOperation(node->binary_operation());
423 VisitReference(node->target());
424 Visit(node->value());
425 ReserveFeedbackSlots(node);
429 void AstNumberingVisitor::VisitBinaryOperation(BinaryOperation* node) {
431 node->set_base_id(ReserveIdRange(BinaryOperation::num_ids()));
432 Visit(node->left());
433 Visit(node->right());
434 ReserveFeedbackSlots(node);
438 void AstNumberingVisitor::VisitCompareOperation(CompareOperation* node) {
440 node->set_base_id(ReserveIdRange(CompareOperation::num_ids()));
441 Visit(node->left());
442 Visit(node->right());
443 ReserveFeedbackSlots(node);
446 void AstNumberingVisitor::VisitSpread(Spread* node) {
450 node->set_base_id(ReserveIdRange(Spread::num_ids()));
451 Visit(node->expression());
454 void AstNumberingVisitor::VisitEmptyParentheses(EmptyParentheses* node) {
458 void AstNumberingVisitor::VisitGetIterator(GetIterator* node) {
461 node->set_base_id(ReserveIdRange(GetIterator::num_ids()));
462 Visit(node->iterable());
463 ReserveFeedbackSlots(node);
466 void AstNumberingVisitor::VisitForInStatement(ForInStatement* node) {
469 node->set_base_id(ReserveIdRange(ForInStatement::num_ids()));
470 Visit(node->enumerable()); // Not part of loop.
471 node->set_first_yield_id(yield_count_);
472 Visit(node->each());
473 Visit(node->body());
474 node->set_yield_count(yield_count_ - node->first_yield_id());
475 ReserveFeedbackSlots(node);
479 void AstNumberingVisitor::VisitForOfStatement(ForOfStatement* node) {
482 node->set_base_id(ReserveIdRange(ForOfStatement::num_ids()));
483 Visit(node->assign_iterator()); // Not part of loop.
484 node->set_first_yield_id(yield_count_);
485 Visit(node->next_result());
486 Visit(node->result_done());
487 Visit(node->assign_each());
488 Visit(node->body());
489 node->set_yield_count(yield_count_ - node->first_yield_id());
493 void AstNumberingVisitor::VisitConditional(Conditional* node) {
495 node->set_base_id(ReserveIdRange(Conditional::num_ids()));
496 Visit(node->condition());
497 Visit(node->then_expression());
498 Visit(node->else_expression());
502 void AstNumberingVisitor::VisitIfStatement(IfStatement* node) {
504 node->set_base_id(ReserveIdRange(IfStatement::num_ids()));
505 Visit(node->condition());
506 Visit(node->then_statement());
507 if (node->HasElseStatement()) {
508 Visit(node->else_statement());
513 void AstNumberingVisitor::VisitSwitchStatement(SwitchStatement* node) {
515 node->set_base_id(ReserveIdRange(SwitchStatement::num_ids()));
516 Visit(node->tag());
517 ZoneList<CaseClause*>* cases = node->cases();
524 void AstNumberingVisitor::VisitCaseClause(CaseClause* node) {
526 node->set_base_id(ReserveIdRange(CaseClause::num_ids()));
527 if (!node->is_default()) Visit(node->label());
528 VisitStatements(node->statements());
529 ReserveFeedbackSlots(node);
533 void AstNumberingVisitor::VisitForStatement(ForStatement* node) {
536 node->set_base_id(ReserveIdRange(ForStatement::num_ids()));
537 if (node->init() != NULL) Visit(node->init()); // Not part of loop.
538 node->set_first_yield_id(yield_count_);
539 if (node->cond() != NULL) Visit(node->cond());
540 if (node->next() != NULL) Visit(node->next());
541 Visit(node->body());
542 node->set_yield_count(yield_count_ - node->first_yield_id());
546 void AstNumberingVisitor::VisitClassLiteral(ClassLiteral* node) {
549 node->set_base_id(ReserveIdRange(ClassLiteral::num_ids()));
550 if (node->extends()) Visit(node->extends());
551 if (node->constructor()) Visit(node->constructor());
552 if (node->class_variable_proxy()) {
553 VisitVariableProxy(node->class_variable_proxy());
555 for (int i = 0; i < node->properties()->length(); i++) {
556 VisitLiteralProperty(node->properties()->at(i));
558 ReserveFeedbackSlots(node);
562 void AstNumberingVisitor::VisitObjectLiteral(ObjectLiteral* node) {
564 node->set_base_id(ReserveIdRange(node->num_ids()));
565 for (int i = 0; i < node->properties()->length(); i++) {
566 VisitLiteralProperty(node->properties()->at(i));
568 node->InitDepthAndFlags();
572 node->CalculateEmitStore(zone_);
573 ReserveFeedbackSlots(node);
576 void AstNumberingVisitor::VisitLiteralProperty(LiteralProperty* node) {
577 if (node->is_computed_name())
579 Visit(node->key());
580 Visit(node->value());
583 void AstNumberingVisitor::VisitArrayLiteral(ArrayLiteral* node) {
585 node->set_base_id(ReserveIdRange(node->num_ids()));
586 for (int i = 0; i < node->values()->length(); i++) {
587 Visit(node->values()->at(i));
589 node->InitDepthAndFlags();
590 ReserveFeedbackSlots(node);
594 void AstNumberingVisitor::VisitCall(Call* node) {
595 if (node->is_possibly_eval()) {
599 ReserveFeedbackSlots(node);
600 node->set_base_id(ReserveIdRange(Call::num_ids()));
601 Visit(node->expression());
602 VisitArguments(node->arguments());
606 void AstNumberingVisitor::VisitCallNew(CallNew* node) {
608 ReserveFeedbackSlots(node);
609 node->set_base_id(ReserveIdRange(CallNew::num_ids()));
610 Visit(node->expression());
611 VisitArguments(node->arguments());
634 void AstNumberingVisitor::VisitFunctionLiteral(FunctionLiteral* node) {
636 node->set_base_id(ReserveIdRange(FunctionLiteral::num_ids()));
637 if (node->ShouldEagerCompile()) {
640 ThreadedListZoneEntry<FunctionLiteral*>(node));
645 if (!AstNumbering::Renumber(stack_limit_, zone_, node, eager_literals_)) {
650 ReserveFeedbackSlots(node);
655 RewritableExpression* node) {
657 node->set_base_id(ReserveIdRange(RewritableExpression::num_ids()));
658 Visit(node->expression());
662 bool AstNumberingVisitor::Renumber(FunctionLiteral* node) {
663 DeclarationScope* scope = node->scope();
680 if (IsResumableFunction(node->kind())) {
684 if (IsClassConstructor(node->kind())) {
688 LanguageModeScope language_mode_scope(this, node->language_mode());
691 VisitStatements(node->body());
693 node->set_ast_properties(&properties_);
694 node->set_dont_optimize_reason(dont_optimize_reason());
695 node->set_yield_count(yield_count_);
704 DCHECK(!node->debug_name().is_null());
707 node->debug_name()->ToCString().get(),