| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/compiler/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
| 6 | 6 |
| 7 #include "src/ast/scopes.h" | 7 #include "src/ast/scopes.h" |
| 8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
| 9 #include "src/compiler/gap-resolver.h" | 9 #include "src/compiler/gap-resolver.h" |
| 10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
| (...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 // We cannot use the constant pool to load the target since | 764 // We cannot use the constant pool to load the target since |
| 765 // we've already restored the caller's frame. | 765 // we've already restored the caller's frame. |
| 766 ConstantPoolUnavailableScope constant_pool_unavailable(masm()); | 766 ConstantPoolUnavailableScope constant_pool_unavailable(masm()); |
| 767 __ Jump(Handle<Code>::cast(i.InputHeapObject(0)), | 767 __ Jump(Handle<Code>::cast(i.InputHeapObject(0)), |
| 768 RelocInfo::CODE_TARGET); | 768 RelocInfo::CODE_TARGET); |
| 769 } | 769 } |
| 770 DCHECK_EQ(LeaveRC, i.OutputRCBit()); | 770 DCHECK_EQ(LeaveRC, i.OutputRCBit()); |
| 771 frame_access_state()->ClearSPDelta(); | 771 frame_access_state()->ClearSPDelta(); |
| 772 break; | 772 break; |
| 773 } | 773 } |
| 774 case kArchTailCallAddress: { |
| 775 int stack_param_delta = i.InputInt32(instr->InputCount() - 1); |
| 776 AssembleDeconstructActivationRecord(stack_param_delta); |
| 777 CHECK(!instr->InputAt(0)->IsImmediate()); |
| 778 __ Jump(i.InputRegister(0)); |
| 779 frame_access_state()->ClearSPDelta(); |
| 780 break; |
| 781 } |
| 774 case kArchCallJSFunction: { | 782 case kArchCallJSFunction: { |
| 775 v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool( | 783 v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool( |
| 776 masm()); | 784 masm()); |
| 777 EnsureSpaceForLazyDeopt(); | 785 EnsureSpaceForLazyDeopt(); |
| 778 Register func = i.InputRegister(0); | 786 Register func = i.InputRegister(0); |
| 779 if (FLAG_debug_code) { | 787 if (FLAG_debug_code) { |
| 780 // Check the function's context matches the context argument. | 788 // Check the function's context matches the context argument. |
| 781 __ LoadP(kScratchReg, | 789 __ LoadP(kScratchReg, |
| 782 FieldMemOperand(func, JSFunction::kContextOffset)); | 790 FieldMemOperand(func, JSFunction::kContextOffset)); |
| 783 __ cmp(cp, kScratchReg); | 791 __ cmp(cp, kScratchReg); |
| (...skipping 1253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2037 padding_size -= v8::internal::Assembler::kInstrSize; | 2045 padding_size -= v8::internal::Assembler::kInstrSize; |
| 2038 } | 2046 } |
| 2039 } | 2047 } |
| 2040 } | 2048 } |
| 2041 | 2049 |
| 2042 #undef __ | 2050 #undef __ |
| 2043 | 2051 |
| 2044 } // namespace compiler | 2052 } // namespace compiler |
| 2045 } // namespace internal | 2053 } // namespace internal |
| 2046 } // namespace v8 | 2054 } // namespace v8 |
| OLD | NEW |