Index: runtime/vm/assembler_x64.h |
diff --git a/runtime/vm/assembler_x64.h b/runtime/vm/assembler_x64.h |
index a257d770bcfab6cd7a53b0fd433ac64a0b039fa3..1cbdc595c13788c9afaf41bcc8628fef4ef65207 100644 |
--- a/runtime/vm/assembler_x64.h |
+++ b/runtime/vm/assembler_x64.h |
@@ -762,7 +762,7 @@ class Assembler : public ValueObject { |
void Jmp(const ExternalLabel* label, Register pp); |
void J(Condition condition, const ExternalLabel* label, Register pp); |
void CallPatchable(const ExternalLabel* label); |
- void Call(const ExternalLabel* label, Register pp); |
+ void Call(const ExternalLabel* label, Register pp, bool emit_fixup = true); |
// Unaware of write barrier (use StoreInto* methods for storing to objects). |
// TODO(koda): Add StackAddress/HeapAddress types to prevent misuse. |
void StoreObject(const Address& dst, const Object& obj, Register pp); |
@@ -897,11 +897,8 @@ class Assembler : public ValueObject { |
const ZoneGrowableArray<intptr_t>& GetPointerOffsets() const { |
return buffer_.pointer_offsets(); |
} |
- const GrowableObjectArray& object_pool_data() const { |
- return object_pool_.data(); |
- } |
- ObjectPool& object_pool() { return object_pool_; } |
+ ObjectPoolHelper& object_pool() { return object_pool_; } |
void FinalizeInstructions(const MemoryRegion& region) { |
buffer_.FinalizeInstructions(region); |
@@ -1025,11 +1022,15 @@ class Assembler : public ValueObject { |
static bool IsSafe(const Object& object) { return true; } |
static bool IsSafeSmi(const Object& object) { return object.IsSmi(); } |
+ static const int kNumFixedObjectEntries = 3; |
+ static const int kNumFixedEntries = 5; |
+ COMPILE_ASSERT(kNumFixedObjectEntries <= kNumFixedEntries); |
+ |
private: |
AssemblerBuffer buffer_; |
// Objects and jump targets. |
- ObjectPool object_pool_; |
+ ObjectPoolHelper object_pool_; |
intptr_t prologue_offset_; |