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/crankshaft/arm64/lithium-codegen-arm64.h" | 5 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" |
6 | 6 |
7 #include "src/arm64/frames-arm64.h" | 7 #include "src/arm64/frames-arm64.h" |
8 #include "src/base/bits.h" | 8 #include "src/base/bits.h" |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 5781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5792 __ JumpIfRoot(receiver, Heap::kUndefinedValueRootIndex, &global_object); | 5792 __ JumpIfRoot(receiver, Heap::kUndefinedValueRootIndex, &global_object); |
5793 | 5793 |
5794 // Deoptimize if the receiver is not a JS object. | 5794 // Deoptimize if the receiver is not a JS object. |
5795 DeoptimizeIfSmi(receiver, instr, Deoptimizer::kSmi); | 5795 DeoptimizeIfSmi(receiver, instr, Deoptimizer::kSmi); |
5796 __ CompareObjectType(receiver, result, result, FIRST_SPEC_OBJECT_TYPE); | 5796 __ CompareObjectType(receiver, result, result, FIRST_SPEC_OBJECT_TYPE); |
5797 __ B(ge, ©_receiver); | 5797 __ B(ge, ©_receiver); |
5798 Deoptimize(instr, Deoptimizer::kNotAJavaScriptObject); | 5798 Deoptimize(instr, Deoptimizer::kNotAJavaScriptObject); |
5799 | 5799 |
5800 __ Bind(&global_object); | 5800 __ Bind(&global_object); |
5801 __ Ldr(result, FieldMemOperand(function, JSFunction::kContextOffset)); | 5801 __ Ldr(result, FieldMemOperand(function, JSFunction::kContextOffset)); |
5802 __ Ldr(result, ContextMemOperand(result, Context::NATIVE_CONTEXT_INDEX)); | 5802 __ Ldr(result, ContextMemOperand(result, Context::GLOBAL_OBJECT_INDEX)); |
5803 __ Ldr(result, ContextMemOperand(result, Context::GLOBAL_PROXY_INDEX)); | 5803 __ Ldr(result, FieldMemOperand(result, JSGlobalObject::kGlobalProxyOffset)); |
5804 __ B(&done); | 5804 __ B(&done); |
5805 | 5805 |
5806 __ Bind(©_receiver); | 5806 __ Bind(©_receiver); |
5807 __ Mov(result, receiver); | 5807 __ Mov(result, receiver); |
5808 __ Bind(&done); | 5808 __ Bind(&done); |
5809 } | 5809 } |
5810 | 5810 |
5811 | 5811 |
5812 void LCodeGen::DoDeferredLoadMutableDouble(LLoadFieldByIndex* instr, | 5812 void LCodeGen::DoDeferredLoadMutableDouble(LLoadFieldByIndex* instr, |
5813 Register result, | 5813 Register result, |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5895 Handle<ScopeInfo> scope_info = instr->scope_info(); | 5895 Handle<ScopeInfo> scope_info = instr->scope_info(); |
5896 __ Push(scope_info); | 5896 __ Push(scope_info); |
5897 __ Push(ToRegister(instr->function())); | 5897 __ Push(ToRegister(instr->function())); |
5898 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5898 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
5899 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5899 RecordSafepoint(Safepoint::kNoLazyDeopt); |
5900 } | 5900 } |
5901 | 5901 |
5902 | 5902 |
5903 } // namespace internal | 5903 } // namespace internal |
5904 } // namespace v8 | 5904 } // namespace v8 |
OLD | NEW |