Lines Matching defs:stmt
129 void Break(Statement* stmt) {
130 PerformCommand(CMD_BREAK, stmt, kNoSourcePosition);
132 void Continue(Statement* stmt) {
133 PerformCommand(CMD_CONTINUE, stmt, kNoSourcePosition);
1517 void BytecodeGenerator::VisitBlock(Block* stmt) {
1519 CurrentScope current_scope(this, stmt->scope());
1520 if (stmt->scope() != nullptr && stmt->scope()->NeedsContext()) {
1521 BuildNewLocalBlockContext(stmt->scope());
1522 ContextScope scope(this, stmt->scope());
1523 VisitBlockDeclarationsAndStatements(stmt);
1525 VisitBlockDeclarationsAndStatements(stmt);
1529 void BytecodeGenerator::VisitBlockDeclarationsAndStatements(Block* stmt) {
1530 BlockBuilder block_builder(builder(), block_coverage_builder_, stmt);
1531 ControlScopeForBreakable execution_control(this, stmt, &block_builder);
1532 if (stmt->scope() != nullptr) {
1533 VisitDeclarations(stmt->scope()->declarations());
1535 VisitStatements(stmt->statements());
1721 Statement* stmt = statements->at(i);
1722 Visit(stmt);
1727 void BytecodeGenerator::VisitExpressionStatement(ExpressionStatement* stmt) {
1728 builder()->SetStatementPosition(stmt);
1729 VisitForEffect(stmt->expression());
1732 void BytecodeGenerator::VisitEmptyStatement(EmptyStatement* stmt) {}
1734 void BytecodeGenerator::VisitIfStatement(IfStatement* stmt) {
1736 builder(), block_coverage_builder_, stmt);
1737 builder()->SetStatementPosition(stmt);
1739 if (stmt->condition()->ToBooleanIsTrue()) {
1742 Visit(stmt->then_statement());
1743 } else if (stmt->condition()->ToBooleanIsFalse()) {
1745 if (stmt->HasElseStatement()) {
1747 Visit(stmt->else_statement());
1753 VisitForTest(stmt->condition(), conditional_builder.then_labels(),
1757 Visit(stmt->then_statement());
1759 if (stmt->HasElseStatement()) {
1762 Visit(stmt->else_statement());
1768 SloppyBlockFunctionStatement* stmt) {
1769 Visit(stmt->statement());
1772 void BytecodeGenerator::VisitContinueStatement(ContinueStatement* stmt) {
1773 AllocateBlockCoverageSlotIfEnabled(stmt, SourceRangeKind::kContinuation);
1774 builder()->SetStatementPosition(stmt);
1775 execution_control()->Continue(stmt->target());
1778 void BytecodeGenerator::VisitBreakStatement(BreakStatement* stmt) {
1779 AllocateBlockCoverageSlotIfEnabled(stmt, SourceRangeKind::kContinuation);
1780 builder()->SetStatementPosition(stmt);
1781 execution_control()->Break(stmt->target());
1784 void BytecodeGenerator::VisitReturnStatement(ReturnStatement* stmt) {
1785 AllocateBlockCoverageSlotIfEnabled(stmt, SourceRangeKind::kContinuation);
1786 builder()->SetStatementPosition(stmt);
1787 VisitForAccumulatorValue(stmt->expression());
1788 int return_position = stmt->end_position();
1792 if (stmt->is_async_return()) {
1799 void BytecodeGenerator::VisitWithStatement(WithStatement* stmt) {
1800 builder()->SetStatementPosition(stmt);
1801 VisitForAccumulatorValue(stmt->expression());
1802 BuildNewLocalWithContext(stmt->scope());
1803 VisitInScope(stmt->statement(), stmt->scope());
1879 bool IsSwitchOptimizable(SwitchStatement* stmt, SwitchInfo* info) {
1880 ZonePtrList<CaseClause>* cases = stmt->cases();
1989 void BytecodeGenerator::VisitSwitchStatement(SwitchStatement* stmt) {
1992 ZonePtrList<CaseClause>* clauses = stmt->cases();
1996 bool use_jump_table = IsSwitchOptimizable(stmt, &info);
2011 SwitchBuilder switch_builder(builder(), block_coverage_builder_, stmt,
2013 ControlScopeForBreakable scope(this, stmt, &switch_builder);
2014 builder()->SetStatementPosition(stmt);
2016 VisitForAccumulatorValue(stmt->tag());
2240 void BytecodeGenerator::VisitIterationBody(IterationStatement* stmt,
2243 ControlScopeForIteration execution_control(this, stmt, loop_builder);
2244 Visit(stmt->body());
2248 void BytecodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) {
2249 LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
2250 if (stmt->cond()->ToBooleanIsFalse()) {
2255 VisitIterationBody(stmt, &loop_builder);
2256 } else if (stmt->cond()->ToBooleanIsTrue()) {
2258 VisitIterationBody(stmt, &loop_builder);
2261 VisitIterationBody(stmt, &loop_builder);
2262 builder()->SetExpressionAsStatementPosition(stmt->cond());
2264 VisitForTest(stmt->cond(), &loop_backbranch, loop_builder.break_labels(),
2270 void BytecodeGenerator::VisitWhileStatement(WhileStatement* stmt) {
2271 LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
2273 if (stmt->cond()->ToBooleanIsFalse()) {
2279 if (!stmt->cond()->ToBooleanIsTrue()) {
2280 builder()->SetExpressionAsStatementPosition(stmt->cond());
2282 VisitForTest(stmt->cond(), &loop_body, loop_builder.break_labels(),
2286 VisitIterationBody(stmt, &loop_builder);
2289 void BytecodeGenerator::VisitForStatement(ForStatement* stmt) {
2290 if (stmt->init() != nullptr) {
2291 Visit(stmt->init());
2294 LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
2295 if (stmt->cond() && stmt->cond()->ToBooleanIsFalse()) {
2302 if (stmt->cond() && !stmt->cond()->ToBooleanIsTrue()) {
2303 builder()->SetExpressionAsStatementPosition(stmt->cond());
2305 VisitForTest(stmt->cond(), &loop_body, loop_builder.break_labels(),
2309 VisitIterationBody(stmt, &loop_builder);
2310 if (stmt->next() != nullptr) {
2311 builder()->SetStatementPosition(stmt->next());
2312 Visit(stmt->next());
2316 void BytecodeGenerator::VisitForInStatement(ForInStatement* stmt) {
2317 if (stmt->subject()->IsNullLiteral() ||
2318 stmt->subject()->IsUndefinedLiteral()) {
2327 builder()->SetExpressionAsStatementPosition(stmt->subject());
2328 VisitForAccumulatorValue(stmt->subject());
2346 LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
2348 builder()->SetExpressionAsStatementPosition(stmt->each());
2361 stmt->each(), AccumulatorPreservingMode::kPreserve);
2362 builder()->SetExpressionPosition(stmt->each());
2366 VisitIterationBody(stmt, &loop_builder);
2400 void BytecodeGenerator::VisitForOfStatement(ForOfStatement* stmt) {
2403 builder()->SetExpressionAsStatementPosition(stmt->subject());
2404 VisitForAccumulatorValue(stmt->subject());
2409 IteratorRecord iterator = BuildGetIteratorRecord(stmt->type());
2419 LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
2427 builder()->SetExpressionAsStatementPosition(stmt->each());
2447 AssignmentLhsData lhs_data = PrepareAssignmentLhs(stmt->each());
2451 VisitIterationBody(stmt, &loop_builder);
2461 void BytecodeGenerator::VisitTryCatchStatement(TryCatchStatement* stmt) {
2466 set_catch_prediction(stmt->GetCatchPrediction(outer_catch_prediction));
2471 Visit(stmt->try_block());
2476 if (stmt->scope()) {
2478 BuildNewLocalCatchContext(stmt->scope());
2483 if (stmt->ShouldClearPendingException(outer_catch_prediction)) {
2491 if (stmt->scope()) {
2492 VisitInScope(stmt->catch_block(), stmt->scope());
2494 VisitBlock(stmt->catch_block());
2497 catch_prediction(), stmt);
2500 void BytecodeGenerator::VisitTryFinallyStatement(TryFinallyStatement* stmt) {
2503 [&]() { Visit(stmt->try_block()); },
2505 [&](Register body_continuation_token) { Visit(stmt->finally_block()); },
2506 catch_prediction(), stmt);
2509 void BytecodeGenerator::VisitDebuggerStatement(DebuggerStatement* stmt) {
2510 builder()->SetStatementPosition(stmt);
2867 InitializeClassMembersStatement* stmt) {
2868 for (int i = 0; i < stmt->fields()->length(); i++) {
2869 BuildClassProperty(stmt->fields()->at(i));
2874 InitializeClassStaticElementsStatement* stmt) {
2875 for (int i = 0; i < stmt->elements()->length(); i++) {
2876 ClassLiteral::StaticElement* element = stmt->elements()->at(i);
7179 void BytecodeGenerator::VisitInScope(Statement* stmt, Scope* scope) {
7183 Visit(stmt);