| 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 |