Home | History | Annotate | Download | only in interpreter

Lines Matching refs:stmt

101   void Break(Statement* stmt) { PerformCommand(CMD_BREAK, stmt); }
102 void Continue(Statement* stmt) { PerformCommand(CMD_CONTINUE, stmt); }
647 void BytecodeGenerator::VisitIterationHeader(IterationStatement* stmt,
649 // Recall that stmt->yield_count() is always zero inside ordinary
656 size_t first_yield = stmt->first_yield_id();
657 for (size_t id = first_yield; id < first_yield + stmt->yield_count(); id++) {
666 if (stmt->yield_count() > 0) {
675 stmt->yield_count(), generator_resume_points_);
708 void BytecodeGenerator::VisitBlock(Block* stmt) {
710 if (stmt->scope() != nullptr && stmt->scope()->NeedsContext()) {
711 VisitNewLocalBlockContext(stmt->scope());
712 ContextScope scope(this, stmt->scope());
713 VisitBlockDeclarationsAndStatements(stmt);
715 VisitBlockDeclarationsAndStatements(stmt);
719 void BytecodeGenerator::VisitBlockDeclarationsAndStatements(Block* stmt) {
721 ControlScopeForBreakable execution_control(this, stmt, &block_builder);
722 if (stmt->scope() != nullptr) {
723 VisitDeclarations(stmt->scope()->declarations());
725 VisitStatements(stmt->statements());
726 if (stmt->labels() != nullptr) block_builder.EndBlock();
859 Statement* stmt = statements->at(i);
860 Visit(stmt);
861 if (stmt->IsJump()) break;
865 void BytecodeGenerator::VisitExpressionStatement(ExpressionStatement* stmt) {
866 builder()->SetStatementPosition(stmt);
867 VisitForEffect(stmt->expression());
870 void BytecodeGenerator::VisitEmptyStatement(EmptyStatement* stmt) {
873 void BytecodeGenerator::VisitIfStatement(IfStatement* stmt) {
874 builder()->SetStatementPosition(stmt);
876 if (stmt->condition()->ToBooleanIsTrue()) {
878 Visit(stmt->then_statement());
879 } else if (stmt->condition()->ToBooleanIsFalse()) {
881 if (stmt->HasElseStatement()) {
882 Visit(stmt->else_statement());
888 VisitForAccumulatorValue(stmt->condition());
890 Visit(stmt->then_statement());
891 if (stmt->HasElseStatement()) {
894 Visit(stmt->else_statement());
903 SloppyBlockFunctionStatement* stmt) {
904 Visit(stmt->statement());
907 void BytecodeGenerator::VisitContinueStatement(ContinueStatement* stmt) {
908 builder()->SetStatementPosition(stmt);
909 execution_control()->Continue(stmt->target());
912 void BytecodeGenerator::VisitBreakStatement(BreakStatement* stmt) {
913 builder()->SetStatementPosition(stmt);
914 execution_control()->Break(stmt->target());
917 void BytecodeGenerator::VisitReturnStatement(ReturnStatement* stmt) {
918 builder()->SetStatementPosition(stmt);
919 VisitForAccumulatorValue(stmt->expression());
923 void BytecodeGenerator::VisitWithStatement(WithStatement* stmt) {
924 builder()->SetStatementPosition(stmt);
925 VisitForAccumulatorValue(stmt->expression());
928 VisitInScope(stmt->statement(), stmt->scope());
931 void BytecodeGenerator::VisitSwitchStatement(SwitchStatement* stmt) {
934 ZoneList<CaseClause*>* clauses = stmt->cases();
936 ControlScopeForBreakable scope(this, stmt, &switch_builder);
939 builder()->SetStatementPosition(stmt);
942 Register tag = VisitForRegisterValue(stmt->tag());
986 void BytecodeGenerator::VisitIterationBody(IterationStatement* stmt,
988 ControlScopeForIteration execution_control(this, stmt, loop_builder);
989 builder()->StackCheck(stmt->position());
990 Visit(stmt->body());
994 void BytecodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) {
996 VisitIterationHeader(stmt, &loop_builder);
997 if (stmt->cond()->ToBooleanIsFalse()) {
998 VisitIterationBody(stmt, &loop_builder);
999 } else if (stmt->cond()->ToBooleanIsTrue()) {
1000 VisitIterationBody(stmt, &loop_builder);
1003 VisitIterationBody(stmt, &loop_builder);
1004 builder()->SetExpressionAsStatementPosition(stmt->cond());
1005 VisitForAccumulatorValue(stmt->cond());
1011 void BytecodeGenerator::VisitWhileStatement(WhileStatement* stmt) {
1012 if (stmt->cond()->ToBooleanIsFalse()) {
1018 VisitIterationHeader(stmt, &loop_builder);
1019 if (!stmt->cond()->ToBooleanIsTrue()) {
1020 builder()->SetExpressionAsStatementPosition(stmt->cond());
1021 VisitForAccumulatorValue(stmt->cond());
1024 VisitIterationBody(stmt, &loop_builder);
1029 void BytecodeGenerator::VisitForStatement(ForStatement* stmt) {
1030 if (stmt->init() != nullptr) {
1031 Visit(stmt->init());
1033 if (stmt->cond() && stmt->cond()->ToBooleanIsFalse()) {
1040 VisitIterationHeader(stmt, &loop_builder);
1041 if (stmt->cond() && !stmt->cond()->ToBooleanIsTrue()) {
1042 builder()->SetExpressionAsStatementPosition(stmt->cond());
1043 VisitForAccumulatorValue(stmt->cond());
1046 VisitIterationBody(stmt, &loop_builder);
1047 if (stmt->next() != nullptr) {
1048 builder()->SetStatementPosition(stmt->next());
1049 Visit(stmt->next());
1128 void BytecodeGenerator::VisitForInStatement(ForInStatement* stmt) {
1129 if (stmt->subject()->IsNullLiteral() ||
1130 stmt->subject()->IsUndefinedLiteral()) {
1139 builder()->SetExpressionAsStatementPosition(stmt->subject());
1140 VisitForAccumulatorValue(stmt->subject());
1161 VisitIterationHeader(stmt, &loop_builder);
1162 builder()->SetExpressionAsStatementPosition(stmt->each());
1166 FeedbackVectorSlot slot = stmt->ForInFeedbackSlot();
1169 VisitForInAssignment(stmt->each(), stmt->EachFeedbackSlot());
1170 VisitIterationBody(stmt, &loop_builder);
1179 void BytecodeGenerator::VisitForOfStatement(ForOfStatement* stmt) {
1181 ControlScopeForIteration control_scope(this, stmt, &loop_builder);
1183 builder()->SetExpressionAsStatementPosition(stmt->assign_iterator());
1184 VisitForEffect(stmt->assign_iterator());
1186 VisitIterationHeader(stmt, &loop_builder);
1187 builder()->SetExpressionAsStatementPosition(stmt->next_result());
1188 VisitForEffect(stmt->next_result());
1189 VisitForAccumulatorValue(stmt->result_done());
1192 VisitForEffect(stmt->assign_each());
1193 VisitIterationBody(stmt, &loop_builder);
1198 void BytecodeGenerator::VisitTryCatchStatement(TryCatchStatement* stmt) {
1213 Visit(stmt->try_block());
1218 VisitNewLocalCatchContext(stmt->variable());
1222 if (stmt->clear_pending_message()) {
1230 VisitInScope(stmt->catch_block(), stmt->scope());
1234 void BytecodeGenerator::VisitTryFinallyStatement(TryFinallyStatement* stmt) {
1268 Visit(stmt->try_block());
1288 Visit(stmt->finally_block());
1298 void BytecodeGenerator::VisitDebuggerStatement(DebuggerStatement* stmt) {
1299 builder()->SetStatementPosition(stmt);
3174 void BytecodeGenerator::VisitInScope(Statement* stmt, Scope* scope) {
3177 Visit(stmt);