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 "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #include "arm64/lithium-codegen-arm64.h" | 7 #include "arm64/lithium-codegen-arm64.h" |
8 #include "arm64/lithium-gap-resolver-arm64.h" | 8 #include "arm64/lithium-gap-resolver-arm64.h" |
9 #include "code-stubs.h" | 9 #include "code-stubs.h" |
10 #include "stub-cache.h" | 10 #include "stub-cache.h" |
(...skipping 2543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2554 | 2554 |
2555 | 2555 |
2556 void LCodeGen::DoConstantS(LConstantS* instr) { | 2556 void LCodeGen::DoConstantS(LConstantS* instr) { |
2557 __ Mov(ToRegister(instr->result()), Operand(instr->value())); | 2557 __ Mov(ToRegister(instr->result()), Operand(instr->value())); |
2558 } | 2558 } |
2559 | 2559 |
2560 | 2560 |
2561 void LCodeGen::DoConstantT(LConstantT* instr) { | 2561 void LCodeGen::DoConstantT(LConstantT* instr) { |
2562 Handle<Object> object = instr->value(isolate()); | 2562 Handle<Object> object = instr->value(isolate()); |
2563 AllowDeferredHandleDereference smi_check; | 2563 AllowDeferredHandleDereference smi_check; |
2564 if (instr->hydrogen()->HasObjectMap()) { | |
2565 Handle<Map> object_map = instr->hydrogen()->ObjectMap().handle(); | |
2566 ASSERT(object->IsHeapObject()); | |
2567 ASSERT(!object_map->is_stable() || | |
2568 *object_map == Handle<HeapObject>::cast(object)->map()); | |
2569 USE(object_map); | |
2570 } | |
2571 __ LoadObject(ToRegister(instr->result()), object); | 2564 __ LoadObject(ToRegister(instr->result()), object); |
2572 } | 2565 } |
2573 | 2566 |
2574 | 2567 |
2575 void LCodeGen::DoContext(LContext* instr) { | 2568 void LCodeGen::DoContext(LContext* instr) { |
2576 // If there is a non-return use, the context must be moved to a register. | 2569 // If there is a non-return use, the context must be moved to a register. |
2577 Register result = ToRegister(instr->result()); | 2570 Register result = ToRegister(instr->result()); |
2578 if (info()->IsOptimizing()) { | 2571 if (info()->IsOptimizing()) { |
2579 __ Ldr(result, MemOperand(fp, StandardFrameConstants::kContextOffset)); | 2572 __ Ldr(result, MemOperand(fp, StandardFrameConstants::kContextOffset)); |
2580 } else { | 2573 } else { |
(...skipping 3430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6011 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); | 6004 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); |
6012 // Index is equal to negated out of object property index plus 1. | 6005 // Index is equal to negated out of object property index plus 1. |
6013 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); | 6006 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); |
6014 __ Ldr(result, FieldMemOperand(result, | 6007 __ Ldr(result, FieldMemOperand(result, |
6015 FixedArray::kHeaderSize - kPointerSize)); | 6008 FixedArray::kHeaderSize - kPointerSize)); |
6016 __ Bind(deferred->exit()); | 6009 __ Bind(deferred->exit()); |
6017 __ Bind(&done); | 6010 __ Bind(&done); |
6018 } | 6011 } |
6019 | 6012 |
6020 } } // namespace v8::internal | 6013 } } // namespace v8::internal |
OLD | NEW |