Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Unified Diff: runtime/vm/assembler_arm.cc

Issue 1544583002: For background compilation we copy ICData so that it is immutable during comnpilation. However, we … (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: remove flag Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/vm/assembler_arm64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/assembler_arm.cc
diff --git a/runtime/vm/assembler_arm.cc b/runtime/vm/assembler_arm.cc
index c32632d511579683c8587aaf4dc94b6279e8d30e..d31948af7db2b4243e3326eb45b79a1db2b1b50b 100644
--- a/runtime/vm/assembler_arm.cc
+++ b/runtime/vm/assembler_arm.cc
@@ -1562,6 +1562,7 @@ void Assembler::LoadIsolate(Register rd) {
bool Assembler::CanLoadFromObjectPool(const Object& object) const {
+ ASSERT(!object.IsICData() || ICData::Cast(object).IsOriginal());
ASSERT(!Thread::CanLoadFromThread(object));
if (!constant_pool_allowed()) {
return false;
@@ -1578,6 +1579,7 @@ void Assembler::LoadObjectHelper(Register rd,
Condition cond,
bool is_unique,
Register pp) {
+ ASSERT(!object.IsICData() || ICData::Cast(object).IsOriginal());
// Load common VM constants from the thread. This works also in places where
// no constant pool is set up (e.g. intrinsic code).
if (Thread::CanLoadFromThread(object)) {
@@ -1636,12 +1638,14 @@ void Assembler::LoadNativeEntry(Register rd,
void Assembler::PushObject(const Object& object) {
+ ASSERT(!object.IsICData() || ICData::Cast(object).IsOriginal());
LoadObject(IP, object);
Push(IP);
}
void Assembler::CompareObject(Register rn, const Object& object) {
+ ASSERT(!object.IsICData() || ICData::Cast(object).IsOriginal());
ASSERT(rn != IP);
if (object.IsSmi()) {
CompareImmediate(rn, reinterpret_cast<int32_t>(object.raw()));
@@ -1900,6 +1904,7 @@ void Assembler::StoreIntoObjectNoBarrier(Register object,
const Address& dest,
const Object& value,
FieldContent old_content) {
+ ASSERT(!value.IsICData() || ICData::Cast(value).IsOriginal());
ASSERT(value.IsSmi() || value.InVMHeap() ||
(value.IsOld() && value.IsNotTemporaryScopedHandle()));
// No store buffer update.
@@ -1912,6 +1917,7 @@ void Assembler::StoreIntoObjectNoBarrierOffset(Register object,
int32_t offset,
const Object& value,
FieldContent old_content) {
+ ASSERT(!value.IsICData() || ICData::Cast(value).IsOriginal());
int32_t ignored = 0;
if (Address::CanHoldStoreOffset(kWord, offset - kHeapObjectTag, &ignored)) {
StoreIntoObjectNoBarrier(object, FieldAddress(object, offset), value,
« no previous file with comments | « no previous file | runtime/vm/assembler_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698