| Index: runtime/vm/assembler_arm64.cc
|
| diff --git a/runtime/vm/assembler_arm64.cc b/runtime/vm/assembler_arm64.cc
|
| index 7b002148648b4e3e22396b13030158e6d7ced3c7..ff5093eedadca38b9dba1fafa8ecedab9b212035 100644
|
| --- a/runtime/vm/assembler_arm64.cc
|
| +++ b/runtime/vm/assembler_arm64.cc
|
| @@ -360,7 +360,6 @@ void Assembler::LoadWordFromPoolOffsetFixed(Register dst, Register pp,
|
|
|
|
|
| intptr_t Assembler::FindImmediate(int64_t imm) {
|
| - ASSERT(Isolate::Current() != Dart::vm_isolate());
|
| return object_pool_wrapper_.FindImmediate(imm);
|
| }
|
|
|
| @@ -380,7 +379,7 @@ bool Assembler::CanLoadFromObjectPool(const Object& object) const {
|
| }
|
| ASSERT(object.IsNotTemporaryScopedHandle());
|
| ASSERT(object.IsOld());
|
| - return (Isolate::Current() != Dart::vm_isolate());
|
| + return true;
|
| }
|
|
|
|
|
| @@ -388,12 +387,7 @@ bool Assembler::CanLoadImmediateFromPool(int64_t imm, Register pp) {
|
| if (!allow_constant_pool()) {
|
| return false;
|
| }
|
| - return !Utils::IsInt(32, imm) &&
|
| - (pp != kNoPP) &&
|
| - // We *could* put constants in the pool in a VM isolate, but it is
|
| - // simpler to maintain the invariant that the object pool is not used
|
| - // in the VM isolate.
|
| - (Isolate::Current() != Dart::vm_isolate());
|
| + return !Utils::IsInt(32, imm) && (pp != kNoPP);
|
| }
|
|
|
|
|
| @@ -439,9 +433,7 @@ void Assembler::LoadObjectHelper(Register dst,
|
| : object_pool_wrapper_.FindObject(object));
|
| LoadWordFromPoolOffset(dst, pp, offset);
|
| } else {
|
| - ASSERT((Isolate::Current() == Dart::vm_isolate()) ||
|
| - object.IsSmi() ||
|
| - object.InVMHeap());
|
| + ASSERT(object.IsSmi() || object.InVMHeap());
|
| LoadDecodableImmediate(dst, reinterpret_cast<int64_t>(object.raw()), pp);
|
| }
|
| }
|
| @@ -473,17 +465,9 @@ void Assembler::CompareObject(Register reg, const Object& object, Register pp) {
|
|
|
|
|
| void Assembler::LoadDecodableImmediate(Register reg, int64_t imm, Register pp) {
|
| - if ((pp != kNoPP) &&
|
| - (Isolate::Current() != Dart::vm_isolate()) &&
|
| - allow_constant_pool()) {
|
| - int64_t val_smi_tag = imm & kSmiTagMask;
|
| - imm &= ~kSmiTagMask; // Mask off the tag bits.
|
| + if ((pp != kNoPP) && allow_constant_pool()) {
|
| const int32_t offset = ObjectPool::element_offset(FindImmediate(imm));
|
| LoadWordFromPoolOffset(reg, pp, offset);
|
| - if (val_smi_tag != 0) {
|
| - // Add back the tag bits.
|
| - orri(reg, reg, Immediate(val_smi_tag));
|
| - }
|
| } else {
|
| // TODO(zra): Since this sequence only needs to be decodable, it can be
|
| // of variable length.
|
|
|