Lines Matching refs:node

27   bool Renumber(FunctionLiteral* node);
30 // AST node visitor interface.
31 #define DEFINE_VISIT(type) void Visit##type(type* node);
35 void VisitVariableProxyReference(VariableProxy* node);
36 void VisitPropertyReference(Property* node);
63 void ReserveFeedbackSlots(Node* node) {
64 node->AssignFeedbackVectorSlots(isolate_, properties_.get_spec(),
85 void AstNumberingVisitor::VisitVariableDeclaration(VariableDeclaration* node) {
87 VisitVariableProxy(node->proxy());
91 void AstNumberingVisitor::VisitEmptyStatement(EmptyStatement* node) {
97 SloppyBlockFunctionStatement* node) {
99 Visit(node->statement());
103 void AstNumberingVisitor::VisitContinueStatement(ContinueStatement* node) {
108 void AstNumberingVisitor::VisitBreakStatement(BreakStatement* node) {
113 void AstNumberingVisitor::VisitDebuggerStatement(DebuggerStatement* node) {
116 node->set_base_id(ReserveIdRange(DebuggerStatement::num_ids()));
121 NativeFunctionLiteral* node) {
124 node->set_base_id(ReserveIdRange(NativeFunctionLiteral::num_ids()));
128 void AstNumberingVisitor::VisitDoExpression(DoExpression* node) {
130 node->set_base_id(ReserveIdRange(DoExpression::num_ids()));
131 Visit(node->block());
132 Visit(node->result());
136 void AstNumberingVisitor::VisitLiteral(Literal* node) {
138 node->set_base_id(ReserveIdRange(Literal::num_ids()));
142 void AstNumberingVisitor::VisitRegExpLiteral(RegExpLiteral* node) {
144 node->set_base_id(ReserveIdRange(RegExpLiteral::num_ids()));
148 void AstNumberingVisitor::VisitVariableProxyReference(VariableProxy* node) {
150 switch (node->var()->location()) {
160 node->set_base_id(ReserveIdRange(VariableProxy::num_ids()));
164 void AstNumberingVisitor::VisitVariableProxy(VariableProxy* node) {
165 VisitVariableProxyReference(node);
166 ReserveFeedbackSlots(node);
170 void AstNumberingVisitor::VisitThisFunction(ThisFunction* node) {
172 node->set_base_id(ReserveIdRange(ThisFunction::num_ids()));
177 SuperPropertyReference* node) {
180 node->set_base_id(ReserveIdRange(SuperPropertyReference::num_ids()));
181 Visit(node->this_var());
182 Visit(node->home_object());
186 void AstNumberingVisitor::VisitSuperCallReference(SuperCallReference* node) {
189 node->set_base_id(ReserveIdRange(SuperCallReference::num_ids()));
190 Visit(node->this_var());
191 Visit(node->new_target_var());
192 Visit(node->this_function_var());
196 void AstNumberingVisitor::VisitExpressionStatement(ExpressionStatement* node) {
198 Visit(node->expression());
202 void AstNumberingVisitor::VisitReturnStatement(ReturnStatement* node) {
204 Visit(node->expression());
208 void AstNumberingVisitor::VisitYield(Yield* node) {
209 node->set_yield_id(yield_count_);
212 node->set_base_id(ReserveIdRange(Yield::num_ids()));
213 Visit(node->generator_object());
214 Visit(node->expression());
218 void AstNumberingVisitor::VisitThrow(Throw* node) {
220 node->set_base_id(ReserveIdRange(Throw::num_ids()));
221 Visit(node->exception());
225 void AstNumberingVisitor::VisitUnaryOperation(UnaryOperation* node) {
227 node->set_base_id(ReserveIdRange(UnaryOperation::num_ids()));
228 Visit(node->expression());
232 void AstNumberingVisitor::VisitCountOperation(CountOperation* node) {
234 node->set_base_id(ReserveIdRange(CountOperation::num_ids()));
235 Visit(node->expression());
236 ReserveFeedbackSlots(node);
240 void AstNumberingVisitor::VisitBlock(Block* node) {
242 node->set_base_id(ReserveIdRange(Block::num_ids()));
243 if (node->scope() != NULL) VisitDeclarations(node->scope()->declarations());
244 VisitStatements(node->statements());
248 void AstNumberingVisitor::VisitFunctionDeclaration(FunctionDeclaration* node) {
250 VisitVariableProxy(node->proxy());
251 VisitFunctionLiteral(node->fun());
255 void AstNumberingVisitor::VisitCallRuntime(CallRuntime* node) {
257 node->set_base_id(ReserveIdRange(CallRuntime::num_ids()));
258 VisitArguments(node->arguments());
275 if (node->is_jsruntime() &&
276 node->context_index() == Context::ASYNC_FUNCTION_AWAIT_CAUGHT_INDEX &&
278 node->set_context_index(Context::ASYNC_FUNCTION_AWAIT_UNCAUGHT_INDEX);
283 void AstNumberingVisitor::VisitWithStatement(WithStatement* node) {
286 node->set_base_id(ReserveIdRange(WithStatement::num_ids()));
287 Visit(node->expression());
288 Visit(node->statement());
292 void AstNumberingVisitor::VisitDoWhileStatement(DoWhileStatement* node) {
295 node->set_base_id(ReserveIdRange(DoWhileStatement::num_ids()));
296 node->set_first_yield_id(yield_count_);
297 Visit(node->body());
298 Visit(node->cond());
299 node->set_yield_count(yield_count_ - node->first_yield_id());
303 void AstNumberingVisitor::VisitWhileStatement(WhileStatement* node) {
306 node->set_base_id(ReserveIdRange(WhileStatement::num_ids()));
307 node->set_first_yield_id(yield_count_);
308 Visit(node->cond());
309 Visit(node->body());
310 node->set_yield_count(yield_count_ - node->first_yield_id());
314 void AstNumberingVisitor::VisitTryCatchStatement(TryCatchStatement* node) {
319 // This node uses its own prediction, unless it's "uncaught", in which case
321 HandlerTable::CatchPrediction catch_prediction = node->catch_prediction();
325 node->set_catch_prediction(catch_prediction_);
326 Visit(node->try_block());
329 Visit(node->catch_block());
333 void AstNumberingVisitor::VisitTryFinallyStatement(TryFinallyStatement* node) {
338 node->set_catch_prediction(catch_prediction_);
339 Visit(node->try_block());
340 Visit(node->finally_block());
344 void AstNumberingVisitor::VisitPropertyReference(Property* node) {
346 node->set_base_id(ReserveIdRange(Property::num_ids()));
347 Visit(node->key());
348 Visit(node->obj());
362 void AstNumberingVisitor::VisitProperty(Property* node) {
363 VisitPropertyReference(node);
364 ReserveFeedbackSlots(node);
368 void AstNumberingVisitor::VisitAssignment(Assignment* node) {
370 node->set_base_id(ReserveIdRange(Assignment::num_ids()));
372 if (node->is_compound()) VisitBinaryOperation(node->binary_operation());
373 VisitReference(node->target());
374 Visit(node->value());
375 ReserveFeedbackSlots(node);
379 void AstNumberingVisitor::VisitBinaryOperation(BinaryOperation* node) {
381 node->set_base_id(ReserveIdRange(BinaryOperation::num_ids()));
382 Visit(node->left());
383 Visit(node->right());
384 ReserveFeedbackSlots(node);
388 void AstNumberingVisitor::VisitCompareOperation(CompareOperation* node) {
390 node->set_base_id(ReserveIdRange(CompareOperation::num_ids()));
391 Visit(node->left());
392 Visit(node->right());
393 ReserveFeedbackSlots(node);
397 void AstNumberingVisitor::VisitSpread(Spread* node) { UNREACHABLE(); }
400 void AstNumberingVisitor::VisitEmptyParentheses(EmptyParentheses* node) {
405 void AstNumberingVisitor::VisitForInStatement(ForInStatement* node) {
408 node->set_base_id(ReserveIdRange(ForInStatement::num_ids()));
409 Visit(node->enumerable()); // Not part of loop.
410 node->set_first_yield_id(yield_count_);
411 Visit(node->each());
412 Visit(node->body());
413 node->set_yield_count(yield_count_ - node->first_yield_id());
414 ReserveFeedbackSlots(node);
418 void AstNumberingVisitor::VisitForOfStatement(ForOfStatement* node) {
421 node->set_base_id(ReserveIdRange(ForOfStatement::num_ids()));
422 Visit(node->assign_iterator()); // Not part of loop.
423 node->set_first_yield_id(yield_count_);
424 Visit(node->next_result());
425 Visit(node->result_done());
426 Visit(node->assign_each());
427 Visit(node->body());
428 node->set_yield_count(yield_count_ - node->first_yield_id());
432 void AstNumberingVisitor::VisitConditional(Conditional* node) {
434 node->set_base_id(ReserveIdRange(Conditional::num_ids()));
435 Visit(node->condition());
436 Visit(node->then_expression());
437 Visit(node->else_expression());
441 void AstNumberingVisitor::VisitIfStatement(IfStatement* node) {
443 node->set_base_id(ReserveIdRange(IfStatement::num_ids()));
444 Visit(node->condition());
445 Visit(node->then_statement());
446 if (node->HasElseStatement()) {
447 Visit(node->else_statement());
452 void AstNumberingVisitor::VisitSwitchStatement(SwitchStatement* node) {
454 node->set_base_id(ReserveIdRange(SwitchStatement::num_ids()));
455 Visit(node->tag());
456 ZoneList<CaseClause*>* cases = node->cases();
463 void AstNumberingVisitor::VisitCaseClause(CaseClause* node) {
465 node->set_base_id(ReserveIdRange(CaseClause::num_ids()));
466 if (!node->is_default()) Visit(node->label());
467 VisitStatements(node->statements());
468 ReserveFeedbackSlots(node);
472 void AstNumberingVisitor::VisitForStatement(ForStatement* node) {
475 node->set_base_id(ReserveIdRange(ForStatement::num_ids()));
476 if (node->init() != NULL) Visit(node->init()); // Not part of loop.
477 node->set_first_yield_id(yield_count_);
478 if (node->cond() != NULL) Visit(node->cond());
479 if (node->next() != NULL) Visit(node->next());
480 Visit(node->body());
481 node->set_yield_count(yield_count_ - node->first_yield_id());
485 void AstNumberingVisitor::VisitClassLiteral(ClassLiteral* node) {
488 node->set_base_id(ReserveIdRange(node->num_ids()));
489 if (node->extends()) Visit(node->extends());
490 if (node->constructor()) Visit(node->constructor());
491 if (node->class_variable_proxy()) {
492 VisitVariableProxy(node->class_variable_proxy());
494 for (int i = 0; i < node->properties()->length(); i++) {
495 VisitLiteralProperty(node->properties()->at(i));
497 ReserveFeedbackSlots(node);
501 void AstNumberingVisitor::VisitObjectLiteral(ObjectLiteral* node) {
503 node->set_base_id(ReserveIdRange(node->num_ids()));
504 for (int i = 0; i < node->properties()->length(); i++) {
505 VisitLiteralProperty(node->properties()->at(i));
507 node->BuildConstantProperties(isolate_);
511 node->CalculateEmitStore(zone_);
512 ReserveFeedbackSlots(node);
515 void AstNumberingVisitor::VisitLiteralProperty(LiteralProperty* node) {
516 if (node->is_computed_name()) DisableCrankshaft(kComputedPropertyName);
517 Visit(node->key());
518 Visit(node->value());
521 void AstNumberingVisitor::VisitArrayLiteral(ArrayLiteral* node) {
523 node->set_base_id(ReserveIdRange(node->num_ids()));
524 for (int i = 0; i < node->values()->length(); i++) {
525 Visit(node->values()->at(i));
527 node->BuildConstantElements(isolate_);
528 ReserveFeedbackSlots(node);
532 void AstNumberingVisitor::VisitCall(Call* node) {
534 ReserveFeedbackSlots(node);
535 node->set_base_id(ReserveIdRange(Call::num_ids()));
536 Visit(node->expression());
537 VisitArguments(node->arguments());
541 void AstNumberingVisitor::VisitCallNew(CallNew* node) {
543 ReserveFeedbackSlots(node);
544 node->set_base_id(ReserveIdRange(CallNew::num_ids()));
545 Visit(node->expression());
546 VisitArguments(node->arguments());
569 void AstNumberingVisitor::VisitFunctionLiteral(FunctionLiteral* node) {
571 node->set_base_id(ReserveIdRange(FunctionLiteral::num_ids()));
578 RewritableExpression* node) {
580 node->set_base_id(ReserveIdRange(RewritableExpression::num_ids()));
581 Visit(node->expression());
585 bool AstNumberingVisitor::Renumber(FunctionLiteral* node) {
586 DeclarationScope* scope = node->scope();
597 if (IsGeneratorFunction(node->kind()) || IsAsyncFunction(node->kind())) {
601 if (IsClassConstructor(node->kind())) {
606 VisitStatements(node->body());
608 node->set_ast_properties(&properties_);
609 node->set_dont_optimize_reason(dont_optimize_reason());
610 node->set_yield_count(yield_count_);