| OLD | NEW |
| 1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 } | 176 } |
| 177 | 177 |
| 178 | 178 |
| 179 void FastCodeGenerator::SetStatementPosition(Statement* stmt) { | 179 void FastCodeGenerator::SetStatementPosition(Statement* stmt) { |
| 180 if (FLAG_debug_info) { | 180 if (FLAG_debug_info) { |
| 181 CodeGenerator::RecordPositions(masm_, stmt->statement_pos()); | 181 CodeGenerator::RecordPositions(masm_, stmt->statement_pos()); |
| 182 } | 182 } |
| 183 } | 183 } |
| 184 | 184 |
| 185 | 185 |
| 186 void FastCodeGenerator::SetStatementPosition(int pos) { |
| 187 if (FLAG_debug_info) { |
| 188 CodeGenerator::RecordPositions(masm_, pos); |
| 189 } |
| 190 } |
| 191 |
| 192 |
| 186 void FastCodeGenerator::SetSourcePosition(int pos) { | 193 void FastCodeGenerator::SetSourcePosition(int pos) { |
| 187 if (FLAG_debug_info && pos != RelocInfo::kNoPosition) { | 194 if (FLAG_debug_info && pos != RelocInfo::kNoPosition) { |
| 188 masm_->RecordPosition(pos); | 195 masm_->RecordPosition(pos); |
| 189 } | 196 } |
| 190 } | 197 } |
| 191 | 198 |
| 192 | 199 |
| 193 void FastCodeGenerator::EmitLogicalOperation(BinaryOperation* expr) { | 200 void FastCodeGenerator::EmitLogicalOperation(BinaryOperation* expr) { |
| 194 #ifdef DEBUG | 201 #ifdef DEBUG |
| 195 Expression::Context expected = Expression::kUninitialized; | 202 Expression::Context expected = Expression::kUninitialized; |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 while (current != NULL) { | 360 while (current != NULL) { |
| 354 stack_depth = current->Exit(stack_depth); | 361 stack_depth = current->Exit(stack_depth); |
| 355 current = current->outer(); | 362 current = current->outer(); |
| 356 } | 363 } |
| 357 __ Drop(stack_depth); | 364 __ Drop(stack_depth); |
| 358 | 365 |
| 359 EmitReturnSequence(stmt->statement_pos()); | 366 EmitReturnSequence(stmt->statement_pos()); |
| 360 } | 367 } |
| 361 | 368 |
| 362 | 369 |
| 363 | |
| 364 | |
| 365 void FastCodeGenerator::VisitWithEnterStatement(WithEnterStatement* stmt) { | 370 void FastCodeGenerator::VisitWithEnterStatement(WithEnterStatement* stmt) { |
| 366 Comment cmnt(masm_, "[ WithEnterStatement"); | 371 Comment cmnt(masm_, "[ WithEnterStatement"); |
| 367 SetStatementPosition(stmt); | 372 SetStatementPosition(stmt); |
| 368 | 373 |
| 369 Visit(stmt->expression()); | 374 Visit(stmt->expression()); |
| 370 if (stmt->is_catch_block()) { | 375 if (stmt->is_catch_block()) { |
| 371 __ CallRuntime(Runtime::kPushCatchContext, 1); | 376 __ CallRuntime(Runtime::kPushCatchContext, 1); |
| 372 } else { | 377 } else { |
| 373 __ CallRuntime(Runtime::kPushContext, 1); | 378 __ CallRuntime(Runtime::kPushContext, 1); |
| 374 } | 379 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 405 increment_loop_depth(); | 410 increment_loop_depth(); |
| 406 | 411 |
| 407 __ bind(&body); | 412 __ bind(&body); |
| 408 Visit(stmt->body()); | 413 Visit(stmt->body()); |
| 409 | 414 |
| 410 // Check stack before looping. | 415 // Check stack before looping. |
| 411 __ StackLimitCheck(&stack_limit_hit); | 416 __ StackLimitCheck(&stack_limit_hit); |
| 412 __ bind(&stack_check_success); | 417 __ bind(&stack_check_success); |
| 413 | 418 |
| 414 __ bind(loop_statement.continue_target()); | 419 __ bind(loop_statement.continue_target()); |
| 420 SetStatementPosition(stmt->condition_position()); |
| 415 VisitForControl(stmt->cond(), &body, loop_statement.break_target()); | 421 VisitForControl(stmt->cond(), &body, loop_statement.break_target()); |
| 416 | 422 |
| 417 __ bind(&stack_limit_hit); | 423 __ bind(&stack_limit_hit); |
| 418 StackCheckStub stack_stub; | 424 StackCheckStub stack_stub; |
| 419 __ CallStub(&stack_stub); | 425 __ CallStub(&stack_stub); |
| 420 __ jmp(&stack_check_success); | 426 __ jmp(&stack_check_success); |
| 421 | 427 |
| 422 __ bind(loop_statement.break_target()); | 428 __ bind(loop_statement.break_target()); |
| 423 | 429 |
| 424 decrement_loop_depth(); | 430 decrement_loop_depth(); |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 __ Drop(stack_depth); | 757 __ Drop(stack_depth); |
| 752 __ PopTryHandler(); | 758 __ PopTryHandler(); |
| 753 return 0; | 759 return 0; |
| 754 } | 760 } |
| 755 | 761 |
| 756 | 762 |
| 757 #undef __ | 763 #undef __ |
| 758 | 764 |
| 759 | 765 |
| 760 } } // namespace v8::internal | 766 } } // namespace v8::internal |
| OLD | NEW |