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 2533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2544 void LCodeGen::DoConstantS(LConstantS* instr) { | 2544 void LCodeGen::DoConstantS(LConstantS* instr) { |
2545 __ Mov(ToRegister(instr->result()), Operand(instr->value())); | 2545 __ Mov(ToRegister(instr->result()), Operand(instr->value())); |
2546 } | 2546 } |
2547 | 2547 |
2548 | 2548 |
2549 void LCodeGen::DoConstantT(LConstantT* instr) { | 2549 void LCodeGen::DoConstantT(LConstantT* instr) { |
2550 Handle<Object> object = instr->value(isolate()); | 2550 Handle<Object> object = instr->value(isolate()); |
2551 AllowDeferredHandleDereference smi_check; | 2551 AllowDeferredHandleDereference smi_check; |
2552 if (instr->hydrogen()->HasObjectMap()) { | 2552 if (instr->hydrogen()->HasObjectMap()) { |
2553 Handle<Map> object_map = instr->hydrogen()->ObjectMap().handle(); | 2553 Handle<Map> object_map = instr->hydrogen()->ObjectMap().handle(); |
2554 CHECK(object->IsHeapObject()); | 2554 ASSERT(object->IsHeapObject()); |
2555 CHECK(!object_map->is_stable() || | 2555 ASSERT(!object_map->is_stable() || |
2556 *object_map == Handle<HeapObject>::cast(object)->map()); | 2556 *object_map == Handle<HeapObject>::cast(object)->map()); |
| 2557 USE(object_map); |
2557 } | 2558 } |
2558 __ LoadObject(ToRegister(instr->result()), object); | 2559 __ LoadObject(ToRegister(instr->result()), object); |
2559 } | 2560 } |
2560 | 2561 |
2561 | 2562 |
2562 void LCodeGen::DoContext(LContext* instr) { | 2563 void LCodeGen::DoContext(LContext* instr) { |
2563 // If there is a non-return use, the context must be moved to a register. | 2564 // If there is a non-return use, the context must be moved to a register. |
2564 Register result = ToRegister(instr->result()); | 2565 Register result = ToRegister(instr->result()); |
2565 if (info()->IsOptimizing()) { | 2566 if (info()->IsOptimizing()) { |
2566 __ Ldr(result, MemOperand(fp, StandardFrameConstants::kContextOffset)); | 2567 __ Ldr(result, MemOperand(fp, StandardFrameConstants::kContextOffset)); |
(...skipping 3425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5992 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); | 5993 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); |
5993 // Index is equal to negated out of object property index plus 1. | 5994 // Index is equal to negated out of object property index plus 1. |
5994 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); | 5995 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); |
5995 __ Ldr(result, FieldMemOperand(result, | 5996 __ Ldr(result, FieldMemOperand(result, |
5996 FixedArray::kHeaderSize - kPointerSize)); | 5997 FixedArray::kHeaderSize - kPointerSize)); |
5997 __ Bind(deferred->exit()); | 5998 __ Bind(deferred->exit()); |
5998 __ Bind(&done); | 5999 __ Bind(&done); |
5999 } | 6000 } |
6000 | 6001 |
6001 } } // namespace v8::internal | 6002 } } // namespace v8::internal |
OLD | NEW |