| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 #include "src/arm64/lithium-codegen-arm64.h" | 7 #include "src/arm64/lithium-codegen-arm64.h" |
| 8 #include "src/arm64/lithium-gap-resolver-arm64.h" | 8 #include "src/arm64/lithium-gap-resolver-arm64.h" |
| 9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
| 10 #include "src/hydrogen-osr.h" | 10 #include "src/hydrogen-osr.h" |
| (...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 // object). | 654 // object). |
| 655 if (info_->this_has_uses() && | 655 if (info_->this_has_uses() && |
| 656 info_->strict_mode() == SLOPPY && | 656 info_->strict_mode() == SLOPPY && |
| 657 !info_->is_native()) { | 657 !info_->is_native()) { |
| 658 Label ok; | 658 Label ok; |
| 659 int receiver_offset = info_->scope()->num_parameters() * kXRegSize; | 659 int receiver_offset = info_->scope()->num_parameters() * kXRegSize; |
| 660 __ Peek(x10, receiver_offset); | 660 __ Peek(x10, receiver_offset); |
| 661 __ JumpIfNotRoot(x10, Heap::kUndefinedValueRootIndex, &ok); | 661 __ JumpIfNotRoot(x10, Heap::kUndefinedValueRootIndex, &ok); |
| 662 | 662 |
| 663 __ Ldr(x10, GlobalObjectMemOperand()); | 663 __ Ldr(x10, GlobalObjectMemOperand()); |
| 664 __ Ldr(x10, FieldMemOperand(x10, GlobalObject::kGlobalReceiverOffset)); | 664 __ Ldr(x10, FieldMemOperand(x10, GlobalObject::kGlobalProxyOffset)); |
| 665 __ Poke(x10, receiver_offset); | 665 __ Poke(x10, receiver_offset); |
| 666 | 666 |
| 667 __ Bind(&ok); | 667 __ Bind(&ok); |
| 668 } | 668 } |
| 669 } | 669 } |
| 670 | 670 |
| 671 ASSERT(__ StackPointer().Is(jssp)); | 671 ASSERT(__ StackPointer().Is(jssp)); |
| 672 info()->set_prologue_offset(masm_->pc_offset()); | 672 info()->set_prologue_offset(masm_->pc_offset()); |
| 673 if (NeedsEagerFrame()) { | 673 if (NeedsEagerFrame()) { |
| 674 if (info()->IsStub()) { | 674 if (info()->IsStub()) { |
| (...skipping 5267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5942 | 5942 |
| 5943 // Deoptimize if the receiver is not a JS object. | 5943 // Deoptimize if the receiver is not a JS object. |
| 5944 DeoptimizeIfSmi(receiver, instr->environment()); | 5944 DeoptimizeIfSmi(receiver, instr->environment()); |
| 5945 __ CompareObjectType(receiver, result, result, FIRST_SPEC_OBJECT_TYPE); | 5945 __ CompareObjectType(receiver, result, result, FIRST_SPEC_OBJECT_TYPE); |
| 5946 __ B(ge, ©_receiver); | 5946 __ B(ge, ©_receiver); |
| 5947 Deoptimize(instr->environment()); | 5947 Deoptimize(instr->environment()); |
| 5948 | 5948 |
| 5949 __ Bind(&global_object); | 5949 __ Bind(&global_object); |
| 5950 __ Ldr(result, FieldMemOperand(function, JSFunction::kContextOffset)); | 5950 __ Ldr(result, FieldMemOperand(function, JSFunction::kContextOffset)); |
| 5951 __ Ldr(result, ContextMemOperand(result, Context::GLOBAL_OBJECT_INDEX)); | 5951 __ Ldr(result, ContextMemOperand(result, Context::GLOBAL_OBJECT_INDEX)); |
| 5952 __ Ldr(result, FieldMemOperand(result, GlobalObject::kGlobalReceiverOffset)); | 5952 __ Ldr(result, FieldMemOperand(result, GlobalObject::kGlobalProxyOffset)); |
| 5953 __ B(&done); | 5953 __ B(&done); |
| 5954 | 5954 |
| 5955 __ Bind(©_receiver); | 5955 __ Bind(©_receiver); |
| 5956 __ Mov(result, receiver); | 5956 __ Mov(result, receiver); |
| 5957 __ Bind(&done); | 5957 __ Bind(&done); |
| 5958 } | 5958 } |
| 5959 | 5959 |
| 5960 | 5960 |
| 5961 void LCodeGen::DoDeferredLoadMutableDouble(LLoadFieldByIndex* instr, | 5961 void LCodeGen::DoDeferredLoadMutableDouble(LLoadFieldByIndex* instr, |
| 5962 Register result, | 5962 Register result, |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6043 Handle<ScopeInfo> scope_info = instr->scope_info(); | 6043 Handle<ScopeInfo> scope_info = instr->scope_info(); |
| 6044 __ Push(scope_info); | 6044 __ Push(scope_info); |
| 6045 __ Push(ToRegister(instr->function())); | 6045 __ Push(ToRegister(instr->function())); |
| 6046 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6046 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
| 6047 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6047 RecordSafepoint(Safepoint::kNoLazyDeopt); |
| 6048 } | 6048 } |
| 6049 | 6049 |
| 6050 | 6050 |
| 6051 | 6051 |
| 6052 } } // namespace v8::internal | 6052 } } // namespace v8::internal |
| OLD | NEW |