OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 #endif | 441 #endif |
442 // Make sure that the constant pool is not emitted inside of the return | 442 // Make sure that the constant pool is not emitted inside of the return |
443 // sequence. | 443 // sequence. |
444 { Assembler::BlockConstPoolScope block_const_pool(masm_); | 444 { Assembler::BlockConstPoolScope block_const_pool(masm_); |
445 int32_t sp_delta = (info_->scope()->num_parameters() + 1) * kPointerSize; | 445 int32_t sp_delta = (info_->scope()->num_parameters() + 1) * kPointerSize; |
446 CodeGenerator::RecordPositions(masm_, function()->end_position() - 1); | 446 CodeGenerator::RecordPositions(masm_, function()->end_position() - 1); |
447 // TODO(svenpanne) The code below is sometimes 4 words, sometimes 5! | 447 // TODO(svenpanne) The code below is sometimes 4 words, sometimes 5! |
448 PredictableCodeSizeScope predictable(masm_, -1); | 448 PredictableCodeSizeScope predictable(masm_, -1); |
449 __ RecordJSReturn(); | 449 __ RecordJSReturn(); |
450 int no_frame_start = __ LeaveFrame(StackFrame::JAVA_SCRIPT); | 450 int no_frame_start = __ LeaveFrame(StackFrame::JAVA_SCRIPT); |
451 __ add(sp, sp, Operand(sp_delta)); | 451 { ConstantPoolUnavailableScope constant_pool_unavailable(masm_); |
452 __ Jump(lr); | 452 __ add(sp, sp, Operand(sp_delta)); |
453 info_->AddNoFrameRange(no_frame_start, masm_->pc_offset()); | 453 __ Jump(lr); |
| 454 info_->AddNoFrameRange(no_frame_start, masm_->pc_offset()); |
| 455 } |
454 } | 456 } |
455 | 457 |
456 #ifdef DEBUG | 458 #ifdef DEBUG |
457 // Check that the size of the code used for returning is large enough | 459 // Check that the size of the code used for returning is large enough |
458 // for the debugger's requirements. | 460 // for the debugger's requirements. |
459 DCHECK(Assembler::kJSReturnSequenceInstructions <= | 461 DCHECK(Assembler::kJSReturnSequenceInstructions <= |
460 masm_->InstructionsGeneratedSince(&check_exit_codesize)); | 462 masm_->InstructionsGeneratedSince(&check_exit_codesize)); |
461 #endif | 463 #endif |
462 } | 464 } |
463 } | 465 } |
(...skipping 4417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4881 | 4883 |
4882 DCHECK(interrupt_address == | 4884 DCHECK(interrupt_address == |
4883 isolate->builtins()->OsrAfterStackCheck()->entry()); | 4885 isolate->builtins()->OsrAfterStackCheck()->entry()); |
4884 return OSR_AFTER_STACK_CHECK; | 4886 return OSR_AFTER_STACK_CHECK; |
4885 } | 4887 } |
4886 | 4888 |
4887 | 4889 |
4888 } } // namespace v8::internal | 4890 } } // namespace v8::internal |
4889 | 4891 |
4890 #endif // V8_TARGET_ARCH_ARM | 4892 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |