Chromium Code Reviews| Index: runtime/vm/assembler_x64.cc |
| diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc |
| index 660c0473cabffe85c6c7087613abd4fec271f186..85c1cd15653c94c52129add8427343a1bdd26cb8 100644 |
| --- a/runtime/vm/assembler_x64.cc |
| +++ b/runtime/vm/assembler_x64.cc |
| @@ -33,13 +33,13 @@ Assembler::Assembler(bool use_far_branches) |
| // These objects and labels need to be accessible through every pool-pointer |
| // at the same index. |
| intptr_t index = |
| - object_pool_.AddObject(Object::null_object(), kNotPatchable); |
| + object_pool_.AddObject(Object::null_object()); |
|
srdjan
2015/06/09 21:49:47
On one line?
Florian Schneider
2015/06/10 08:26:17
Done.
|
| ASSERT(index == 0); |
| - index = object_pool_.AddObject(Bool::True(), kNotPatchable); |
| + index = object_pool_.AddObject(Bool::True()); |
| ASSERT(index == 1); |
| - index = object_pool_.AddObject(Bool::False(), kNotPatchable); |
| + index = object_pool_.AddObject(Bool::False()); |
| ASSERT(index == 2); |
| const Smi& vacant = Smi::Handle(Smi::New(0xfa >> kSmiTagShift)); |
| @@ -48,14 +48,14 @@ Assembler::Assembler(bool use_far_branches) |
| object_pool_.AddExternalLabel(&stub_code->UpdateStoreBufferLabel(), |
| kNotPatchable); |
| } else { |
| - object_pool_.AddObject(vacant, kNotPatchable); |
| + object_pool_.AddObject(vacant); |
| } |
| if (stub_code->CallToRuntime_entry() != NULL) { |
| object_pool_.AddExternalLabel(&stub_code->CallToRuntimeLabel(), |
| kNotPatchable); |
| } else { |
| - object_pool_.AddObject(vacant, kNotPatchable); |
| + object_pool_.AddObject(vacant); |
| } |
| } |
| } |
| @@ -95,8 +95,8 @@ void Assembler::LoadExternalLabel(Register dst, |
| const ExternalLabel* label, |
| Patchability patchable, |
| Register pp) { |
| - const int32_t offset = |
| - Array::element_offset(object_pool_.FindExternalLabel(label, patchable)); |
| + const int32_t offset = ObjectPool::element_offset( |
| + object_pool_.FindExternalLabel(label, patchable)); |
| LoadWordFromPoolOffset(dst, pp, offset - kHeapObjectTag); |
| } |
| @@ -115,8 +115,8 @@ void Assembler::call(const ExternalLabel* label) { |
| void Assembler::CallPatchable(const ExternalLabel* label) { |
| ASSERT(allow_constant_pool()); |
| intptr_t call_start = buffer_.GetPosition(); |
| - const int32_t offset = |
| - Array::element_offset(object_pool_.FindExternalLabel(label, kPatchable)); |
| + const int32_t offset = ObjectPool::element_offset( |
| + object_pool_.FindExternalLabel(label, kPatchable)); |
| call(Address::AddressBaseImm32(PP, offset - kHeapObjectTag)); |
| ASSERT((buffer_.GetPosition() - call_start) == kCallExternalLabelSize); |
| } |
| @@ -126,7 +126,7 @@ void Assembler::Call(const ExternalLabel* label, Register pp) { |
| if (Isolate::Current() == Dart::vm_isolate()) { |
| call(label); |
| } else { |
| - const int32_t offset = Array::element_offset( |
| + const int32_t offset = ObjectPool::element_offset( |
| object_pool_.FindExternalLabel(label, kNotPatchable)); |
| call(Address::AddressBaseImm32(pp, offset - kHeapObjectTag)); |
| } |
| @@ -2607,8 +2607,8 @@ void Assembler::jmp(const ExternalLabel* label) { |
| void Assembler::JmpPatchable(const ExternalLabel* label, Register pp) { |
| ASSERT(allow_constant_pool()); |
| intptr_t call_start = buffer_.GetPosition(); |
| - const int32_t offset = |
| - Array::element_offset(object_pool_.FindExternalLabel(label, kPatchable)); |
| + const int32_t offset = ObjectPool::element_offset( |
| + object_pool_.FindExternalLabel(label, kPatchable)); |
| // Patchable jumps always use a 32-bit immediate encoding. |
| jmp(Address::AddressBaseImm32(pp, offset - kHeapObjectTag)); |
| ASSERT((buffer_.GetPosition() - call_start) == JumpPattern::kLengthInBytes); |
| @@ -2616,7 +2616,7 @@ void Assembler::JmpPatchable(const ExternalLabel* label, Register pp) { |
| void Assembler::Jmp(const ExternalLabel* label, Register pp) { |
| - const int32_t offset = Array::element_offset( |
| + const int32_t offset = ObjectPool::element_offset( |
| object_pool_.FindExternalLabel(label, kNotPatchable)); |
| jmp(Address(pp, offset - kHeapObjectTag)); |
| } |
| @@ -2817,7 +2817,7 @@ void Assembler::LoadIsolate(Register dst) { |
| void Assembler::LoadObject(Register dst, const Object& object, Register pp) { |
| if (CanLoadFromObjectPool(object)) { |
| const int32_t offset = |
| - Array::element_offset(object_pool_.FindObject(object, kNotPatchable)); |
| + ObjectPool::element_offset(object_pool_.FindObject(object)); |
| LoadWordFromPoolOffset(dst, pp, offset - kHeapObjectTag); |
| } else { |
| ASSERT((Isolate::Current() == Dart::vm_isolate()) || |
| @@ -2852,7 +2852,7 @@ void Assembler::PushObject(const Object& object, Register pp) { |
| void Assembler::CompareObject(Register reg, const Object& object, Register pp) { |
| if (CanLoadFromObjectPool(object)) { |
| const int32_t offset = |
| - Array::element_offset(object_pool_.FindObject(object, kNotPatchable)); |
| + ObjectPool::element_offset(object_pool_.FindObject(object)); |
| cmpq(reg, Address(pp, offset-kHeapObjectTag)); |
| } else { |
| CompareImmediate( |
| @@ -2863,8 +2863,7 @@ void Assembler::CompareObject(Register reg, const Object& object, Register pp) { |
| intptr_t Assembler::FindImmediate(int64_t imm) { |
| ASSERT(Isolate::Current() != Dart::vm_isolate()); |
| - const Smi& smi = Smi::Handle(reinterpret_cast<RawSmi*>(imm)); |
| - return object_pool_.FindObject(smi, kNotPatchable); |
| + return object_pool_.FindImmediate(imm); |
| } |
| @@ -2882,16 +2881,8 @@ void Assembler::LoadImmediate(Register reg, const Immediate& imm, Register pp) { |
| if (CanLoadImmediateFromPool(imm, pp)) { |
| // It's a 64-bit constant and we're not in the VM isolate, so load from |
| // object pool. |
| - int64_t val = imm.value(); |
| - // Save the bits that must be masked-off for the SmiTag |
| - int64_t val_smi_tag = val & kSmiTagMask; |
| - val &= ~kSmiTagMask; // Mask off the tag bits. |
| - const int32_t offset = Array::element_offset(FindImmediate(val)); |
| + int32_t offset = ObjectPool::element_offset(FindImmediate(imm.value())); |
| LoadWordFromPoolOffset(reg, pp, offset - kHeapObjectTag); |
| - if (val_smi_tag != 0) { |
| - // Add back the tag bits. |
| - orq(reg, Immediate(val_smi_tag)); |
| - } |
| } else { |
| movq(reg, imm); |
| } |