[vm] Add names for more types to the V8 snapshot profile output.
Fix some types of base objects in the V8 snapshot profile output.
Rename ICData::ic_data_ to entries_ as it does not point to an ICData.
Change-Id: Ie80974e2eb741810a5f540dd40e5d60a519d8e4e
Reviewed-on: https://dart-review.googlesource.com/c/92665
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 8ae8739..2f07321 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -1050,7 +1050,7 @@
intptr_t count = objects_.length();
for (intptr_t i = 0; i < count; i++) {
RawScript* script = objects_[i];
- AutoTraceObject(script);
+ AutoTraceObjectName(script, script->ptr()->url_);
WriteFromTo(script);
s->Write<int32_t>(script->ptr()->line_offset_);
s->Write<int32_t>(script->ptr()->col_offset_);
@@ -2161,7 +2161,7 @@
intptr_t count = objects_.length();
for (intptr_t i = 0; i < count; i++) {
RawUnlinkedCall* unlinked = objects_[i];
- AutoTraceObject(unlinked);
+ AutoTraceObjectName(unlinked, unlinked->ptr()->target_name_);
WriteFromTo(unlinked);
}
}
@@ -2228,7 +2228,7 @@
intptr_t count = objects_.length();
for (intptr_t i = 0; i < count; i++) {
RawICData* ic = objects_[i];
- AutoTraceObject(ic);
+ AutoTraceObjectName(ic, ic->ptr()->target_name_);
WriteFromTo(ic);
if (kind != Snapshot::kFullAOT) {
NOT_IN_PRECOMPILED(s->Write<int32_t>(ic->ptr()->deopt_id_));
@@ -2298,7 +2298,7 @@
intptr_t count = objects_.length();
for (intptr_t i = 0; i < count; i++) {
RawMegamorphicCache* cache = objects_[i];
- AutoTraceObject(cache);
+ AutoTraceObjectName(cache, cache->ptr()->target_name_);
WriteFromTo(cache);
s->Write<int32_t>(cache->ptr()->filled_entry_count_);
}
@@ -3156,7 +3156,7 @@
#if !defined(DART_PRECOMPILED_RUNTIME)
class MintSerializationCluster : public SerializationCluster {
public:
- MintSerializationCluster() : SerializationCluster("Mint") {}
+ MintSerializationCluster() : SerializationCluster("int") {}
~MintSerializationCluster() {}
void Trace(Serializer* s, RawObject* object) {
@@ -3244,7 +3244,7 @@
#if !defined(DART_PRECOMPILED_RUNTIME)
class DoubleSerializationCluster : public SerializationCluster {
public:
- DoubleSerializationCluster() : SerializationCluster("Double") {}
+ DoubleSerializationCluster() : SerializationCluster("double") {}
~DoubleSerializationCluster() {}
void Trace(Serializer* s, RawObject* object) {
@@ -4673,9 +4673,10 @@
// These objects are always allocated by Object::InitOnce, so they are not
// written into the snapshot.
- AddBaseObject(Object::null(), "Null", "<null>");
- AddBaseObject(Object::sentinel().raw(), "Sentinel");
- AddBaseObject(Object::transition_sentinel().raw(), "Sentinel");
+ AddBaseObject(Object::null(), "Null", "null");
+ AddBaseObject(Object::sentinel().raw(), "Null", "sentinel");
+ AddBaseObject(Object::transition_sentinel().raw(), "Null",
+ "transition_sentinel");
AddBaseObject(Object::empty_array().raw(), "Array", "<empty_array>");
AddBaseObject(Object::zero_array().raw(), "Array", "<zero_array>");
AddBaseObject(Object::dynamic_type().raw(), "Type", "<dynamic type>");
@@ -4701,8 +4702,8 @@
"ArgumentsDescriptor", "<cached arguments descriptor>");
}
for (intptr_t i = 0; i < ICData::kCachedICDataArrayCount; i++) {
- AddBaseObject(ICData::cached_icdata_arrays_[i], "ICData",
- "<cached icdata>");
+ AddBaseObject(ICData::cached_icdata_arrays_[i], "Array",
+ "<empty icdata entries>");
}
ClassTable* table = isolate()->class_table();
diff --git a/runtime/vm/compiler/runtime_api.cc b/runtime/vm/compiler/runtime_api.cc
index 564c439..17c667b 100644
--- a/runtime/vm/compiler/runtime_api.cc
+++ b/runtime/vm/compiler/runtime_api.cc
@@ -260,8 +260,8 @@
return dart::ICData::arguments_descriptor_offset();
}
-word ICData::ic_data_offset() {
- return dart::ICData::ic_data_offset();
+word ICData::entries_offset() {
+ return dart::ICData::entries_offset();
}
word ICData::static_receiver_type_offset() {
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 6af5760..5029896 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -372,7 +372,7 @@
public:
static word owner_offset();
static word arguments_descriptor_offset();
- static word ic_data_offset();
+ static word entries_offset();
static word static_receiver_type_offset();
static word state_bits_offset();
diff --git a/runtime/vm/compiler/stub_code_compiler_arm.cc b/runtime/vm/compiler/stub_code_compiler_arm.cc
index 8fa9142..fc4b9dc 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm.cc
@@ -1653,7 +1653,7 @@
UNIMPLEMENTED();
}
// R9: IC data object (preserved).
- __ ldr(R8, FieldAddress(R9, target::ICData::ic_data_offset()));
+ __ ldr(R8, FieldAddress(R9, target::ICData::entries_offset()));
// R8: ic_data_array with check entries: classes and target functions.
__ AddImmediate(R8, target::Array::data_offset() - kHeapObjectTag);
// R8: points directly to the first ic data array element.
@@ -1741,7 +1741,7 @@
// Loop that checks if there is an IC data match.
Label loop, found, miss;
// R9: IC data object (preserved).
- __ ldr(R8, FieldAddress(R9, target::ICData::ic_data_offset()));
+ __ ldr(R8, FieldAddress(R9, target::ICData::entries_offset()));
// R8: ic_data_array with check entries: classes and target functions.
const int kIcDataOffset = target::Array::data_offset() - kHeapObjectTag;
// R8: points at the IC data array.
@@ -1966,7 +1966,7 @@
#endif
// R9: IC data object (preserved).
- __ ldr(R8, FieldAddress(R9, target::ICData::ic_data_offset()));
+ __ ldr(R8, FieldAddress(R9, target::ICData::entries_offset()));
// R8: ic_data_array with entries: target functions and count.
__ AddImmediate(R8, target::Array::data_offset() - kHeapObjectTag);
// R8: points directly to the first ic data array element.
@@ -2747,7 +2747,7 @@
Label loop, found, miss;
__ ldr(ARGS_DESC_REG,
FieldAddress(R9, target::ICData::arguments_descriptor_offset()));
- __ ldr(R8, FieldAddress(R9, target::ICData::ic_data_offset()));
+ __ ldr(R8, FieldAddress(R9, target::ICData::entries_offset()));
__ AddImmediate(R8, target::Array::data_offset() - kHeapObjectTag);
// R8: first IC entry
__ LoadTaggedClassIdMayBeSmi(R1, R0);
@@ -2781,7 +2781,7 @@
void StubCodeCompiler::GenerateICCallThroughCodeStub(Assembler* assembler) {
Label loop, found, miss;
- __ ldr(R8, FieldAddress(R9, target::ICData::ic_data_offset()));
+ __ ldr(R8, FieldAddress(R9, target::ICData::entries_offset()));
__ ldr(R4, FieldAddress(R9, target::ICData::arguments_descriptor_offset()));
__ AddImmediate(R8, target::Array::data_offset() - kHeapObjectTag);
// R8: first IC entry
diff --git a/runtime/vm/compiler/stub_code_compiler_arm64.cc b/runtime/vm/compiler/stub_code_compiler_arm64.cc
index 58f370c..30acf68 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm64.cc
@@ -1838,7 +1838,7 @@
}
// R5: IC data object (preserved).
- __ LoadFieldFromOffset(R6, R5, target::ICData::ic_data_offset());
+ __ LoadFieldFromOffset(R6, R5, target::ICData::entries_offset());
// R6: ic_data_array with check entries: classes and target functions.
__ AddImmediate(R6, target::Array::data_offset() - kHeapObjectTag);
// R6: points directly to the first ic data array element.
@@ -1929,7 +1929,7 @@
// Loop that checks if there is an IC data match.
Label loop, found, miss;
// R5: IC data object (preserved).
- __ LoadFieldFromOffset(R6, R5, target::ICData::ic_data_offset());
+ __ LoadFieldFromOffset(R6, R5, target::ICData::entries_offset());
// R6: ic_data_array with check entries: classes and target functions.
__ AddImmediate(R6, target::Array::data_offset() - kHeapObjectTag);
// R6: points directly to the first ic data array element.
@@ -2162,7 +2162,7 @@
#endif
// R5: IC data object (preserved).
- __ LoadFieldFromOffset(R6, R5, target::ICData::ic_data_offset());
+ __ LoadFieldFromOffset(R6, R5, target::ICData::entries_offset());
// R6: ic_data_array with entries: target functions and count.
__ AddImmediate(R6, target::Array::data_offset() - kHeapObjectTag);
// R6: points directly to the first ic data array element.
@@ -3021,7 +3021,7 @@
Label loop, found, miss;
__ ldr(ARGS_DESC_REG,
FieldAddress(R5, target::ICData::arguments_descriptor_offset()));
- __ ldr(R8, FieldAddress(R5, target::ICData::ic_data_offset()));
+ __ ldr(R8, FieldAddress(R5, target::ICData::entries_offset()));
__ AddImmediate(R8, target::Array::data_offset() - kHeapObjectTag);
// R8: first IC entry
__ LoadTaggedClassIdMayBeSmi(R1, R0);
@@ -3057,7 +3057,7 @@
void StubCodeCompiler::GenerateICCallThroughCodeStub(Assembler* assembler) {
Label loop, found, miss;
- __ ldr(R8, FieldAddress(R5, target::ICData::ic_data_offset()));
+ __ ldr(R8, FieldAddress(R5, target::ICData::entries_offset()));
__ ldr(R4, FieldAddress(R5, target::ICData::arguments_descriptor_offset()));
__ AddImmediate(R8, target::Array::data_offset() - kHeapObjectTag);
// R8: first IC entry
diff --git a/runtime/vm/compiler/stub_code_compiler_ia32.cc b/runtime/vm/compiler/stub_code_compiler_ia32.cc
index 94bafe4..0fe7e81 100644
--- a/runtime/vm/compiler/stub_code_compiler_ia32.cc
+++ b/runtime/vm/compiler/stub_code_compiler_ia32.cc
@@ -1404,7 +1404,7 @@
}
// ECX: IC data object.
- __ movl(EBX, FieldAddress(ECX, target::ICData::ic_data_offset()));
+ __ movl(EBX, FieldAddress(ECX, target::ICData::entries_offset()));
// EBX: ic_data_array with check entries: classes and target functions.
__ leal(EBX, FieldAddress(EBX, target::Array::data_offset()));
#if defined(DEBUG)
@@ -1486,7 +1486,7 @@
// Loop that checks if there is an IC data match.
Label loop, found, miss;
// ECX: IC data object (preserved).
- __ movl(EBX, FieldAddress(ECX, target::ICData::ic_data_offset()));
+ __ movl(EBX, FieldAddress(ECX, target::ICData::entries_offset()));
// EBX: ic_data_array with check entries: classes and target functions.
__ leal(EBX, FieldAddress(EBX, target::Array::data_offset()));
// EBX: points directly to the first ic data array element.
@@ -1728,7 +1728,7 @@
#endif
// ECX: IC data object (preserved).
- __ movl(EBX, FieldAddress(ECX, target::ICData::ic_data_offset()));
+ __ movl(EBX, FieldAddress(ECX, target::ICData::entries_offset()));
// EBX: ic_data_array with entries: target functions and count.
__ leal(EBX, FieldAddress(EBX, target::Array::data_offset()));
// EBX: points directly to the first ic data array element.
diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc
index 5997a40..b357b77 100644
--- a/runtime/vm/compiler/stub_code_compiler_x64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_x64.cc
@@ -1819,7 +1819,7 @@
}
// RBX: IC data object (preserved).
- __ movq(R13, FieldAddress(RBX, target::ICData::ic_data_offset()));
+ __ movq(R13, FieldAddress(RBX, target::ICData::entries_offset()));
// R13: ic_data_array with check entries: classes and target functions.
__ leaq(R13, FieldAddress(R13, target::Array::data_offset()));
// R13: points directly to the first ic data array element.
@@ -1903,7 +1903,7 @@
// Loop that checks if there is an IC data match.
Label loop, found, miss;
// RBX: IC data object (preserved).
- __ movq(R13, FieldAddress(RBX, target::ICData::ic_data_offset()));
+ __ movq(R13, FieldAddress(RBX, target::ICData::entries_offset()));
// R13: ic_data_array with check entries: classes and target functions.
__ leaq(R13, FieldAddress(R13, target::Array::data_offset()));
// R13: points directly to the first ic data array element.
@@ -2192,7 +2192,7 @@
#endif
// RBX: IC data object (preserved).
- __ movq(R12, FieldAddress(RBX, target::ICData::ic_data_offset()));
+ __ movq(R12, FieldAddress(RBX, target::ICData::entries_offset()));
// R12: ic_data_array with entries: target functions and count.
__ leaq(R12, FieldAddress(R12, target::Array::data_offset()));
// R12: points directly to the first ic data array element.
@@ -3047,7 +3047,7 @@
// R10: arguments descriptor
void StubCodeCompiler::GenerateICCallThroughFunctionStub(Assembler* assembler) {
Label loop, found, miss;
- __ movq(R13, FieldAddress(RBX, target::ICData::ic_data_offset()));
+ __ movq(R13, FieldAddress(RBX, target::ICData::entries_offset()));
__ movq(R10,
FieldAddress(RBX, target::ICData::arguments_descriptor_offset()));
__ leaq(R13, FieldAddress(R13, target::Array::data_offset()));
@@ -3087,7 +3087,7 @@
void StubCodeCompiler::GenerateICCallThroughCodeStub(Assembler* assembler) {
Label loop, found, miss;
- __ movq(R13, FieldAddress(RBX, target::ICData::ic_data_offset()));
+ __ movq(R13, FieldAddress(RBX, target::ICData::entries_offset()));
__ movq(R10,
FieldAddress(RBX, target::ICData::arguments_descriptor_offset()));
__ leaq(R13, FieldAddress(R13, target::Array::data_offset()));
diff --git a/runtime/vm/interpreter.cc b/runtime/vm/interpreter.cc
index d4cc17b..1500348 100644
--- a/runtime/vm/interpreter.cc
+++ b/runtime/vm/interpreter.cc
@@ -908,7 +908,7 @@
const intptr_t kCheckedArgs = 1;
RawObject** args = call_base;
- RawArray* cache = icdata->ptr()->ic_data_->ptr();
+ RawArray* cache = icdata->ptr()->entries_->ptr();
const intptr_t type_args_len =
InterpreterHelpers::ArgDescTypeArgsLen(icdata->ptr()->args_descriptor_);
@@ -953,7 +953,7 @@
const intptr_t kCheckedArgs = 2;
RawObject** args = call_base;
- RawArray* cache = icdata->ptr()->ic_data_->ptr();
+ RawArray* cache = icdata->ptr()->entries_->ptr();
const intptr_t type_args_len =
InterpreterHelpers::ArgDescTypeArgsLen(icdata->ptr()->args_descriptor_);
@@ -1818,7 +1818,7 @@
// Look up the function in the ICData.
RawObject* ic_data_obj = SP[0];
RawICData* ic_data = RAW_CAST(ICData, ic_data_obj);
- RawObject** data = ic_data->ptr()->ic_data_->ptr()->data();
+ RawObject** data = ic_data->ptr()->entries_->ptr()->data();
InterpreterHelpers::IncrementICUsageCount(data, 0, 0);
SP[0] = data[ICData::TargetIndexFor(ic_data->ptr()->state_bits_ & 0x3)];
RawObject** call_base = SP - argc;
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 53e3ea3..91a5729 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -12893,7 +12893,7 @@
void ICData::ResetSwitchable(Zone* zone) const {
ASSERT(NumArgsTested() == 1);
ASSERT(!IsTrackingExactness());
- set_ic_data_array(Array::Handle(zone, CachedEmptyICDataArray(1, false)));
+ set_entries(Array::Handle(zone, CachedEmptyICDataArray(1, false)));
}
const char* ICData::ToCString() const {
@@ -12962,9 +12962,9 @@
#endif
}
-void ICData::set_ic_data_array(const Array& value) const {
+void ICData::set_entries(const Array& value) const {
ASSERT(!value.IsNull());
- StorePointer<RawArray*, MemoryOrder::kRelease>(&raw_ptr()->ic_data_,
+ StorePointer<RawArray*, MemoryOrder::kRelease>(&raw_ptr()->entries_,
value.raw());
}
@@ -13041,7 +13041,7 @@
}
intptr_t ICData::Length() const {
- return (Smi::Value(ic_data()->ptr()->length_) / TestEntryLength());
+ return (Smi::Value(entries()->ptr()->length_) / TestEntryLength());
}
intptr_t ICData::NumberOfChecks() const {
@@ -13121,7 +13121,7 @@
const intptr_t len = Length();
ASSERT(index >= 0);
ASSERT(index < len);
- Array& data = Array::Handle(ic_data());
+ Array& data = Array::Handle(entries());
const intptr_t start = index * TestEntryLength();
const intptr_t end = start + TestEntryLength();
for (intptr_t i = start; i < end; i++) {
@@ -13147,7 +13147,7 @@
ASSERT(IsSentinelAt(len - 1));
if (NumArgsTested() == 0) {
// No type feedback is being collected.
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
// Static calls with no argument checks hold only one target and the
// sentinel value.
ASSERT(len == 2);
@@ -13161,7 +13161,7 @@
data.SetAt(1, value);
} else {
// Type feedback on arguments is being collected.
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
// Fill all but the first entry with the sentinel.
for (intptr_t i = len - 1; i > 0; i--) {
@@ -13238,7 +13238,7 @@
// Can add only once.
const intptr_t old_num = NumberOfChecks();
ASSERT(old_num == 0);
- Array& data = Array::Handle(ic_data());
+ Array& data = Array::Handle(entries());
const intptr_t new_len = data.Length() + TestEntryLength();
data = Array::Grow(data, new_len, Heap::kOld);
WriteSentinel(data, TestEntryLength());
@@ -13251,7 +13251,7 @@
data.SetAt(data_pos, value);
// Multithreaded access to ICData requires setting of array to be the last
// operation.
- set_ic_data_array(data);
+ set_entries(data);
}
bool ICData::ValidateInterceptor(const Function& target) const {
@@ -13281,7 +13281,7 @@
ASSERT(NumArgsTested() > 1); // Otherwise use 'AddReceiverCheck'.
ASSERT(class_ids.length() == NumArgsTested());
const intptr_t old_num = NumberOfChecks();
- Array& data = Array::Handle(ic_data());
+ Array& data = Array::Handle(entries());
// ICData of static calls with NumArgsTested() > 0 have initially a
// dummy set of cids entered (see ICData::AddTarget). That entry is
// overwritten by first real type feedback data.
@@ -13322,11 +13322,11 @@
data.SetAt(data_pos++, value);
// Multithreaded access to ICData requires setting of array to be the last
// operation.
- set_ic_data_array(data);
+ set_entries(data);
}
RawArray* ICData::Grow(intptr_t* index) const {
- Array& data = Array::Handle(ic_data());
+ Array& data = Array::Handle(entries());
// Last entry in array should be a sentinel and will be the new entry
// that can be updated after growing.
*index = Length() - 1;
@@ -13401,14 +13401,14 @@
}
// Multithreaded access to ICData requires setting of array to be the last
// operation.
- set_ic_data_array(data);
+ set_entries(data);
}
StaticTypeExactnessState ICData::GetExactnessAt(intptr_t index) const {
if (!IsTrackingExactness()) {
return StaticTypeExactnessState::NotTracking();
}
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
intptr_t data_pos = index * TestEntryLength();
return StaticTypeExactnessState::Decode(
Smi::Value(Smi::RawCast(data.At(data_pos + NumArgsTested() + 2))));
@@ -13421,7 +13421,7 @@
ASSERT(class_ids != NULL);
ASSERT(target != NULL);
class_ids->Clear();
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
intptr_t data_pos = index * TestEntryLength();
for (intptr_t i = 0; i < NumArgsTested(); i++) {
class_ids->Add(Smi::Value(Smi::RawCast(data.At(data_pos++))));
@@ -13431,7 +13431,7 @@
bool ICData::IsSentinelAt(intptr_t index) const {
ASSERT(index < Length());
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
const intptr_t entry_length = TestEntryLength();
intptr_t data_pos = index * TestEntryLength();
for (intptr_t i = 0; i < entry_length; i++) {
@@ -13449,7 +13449,7 @@
ASSERT(class_ids != NULL);
ASSERT(!IsSentinelAt(index));
class_ids->Clear();
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
intptr_t data_pos = index * TestEntryLength();
for (intptr_t i = 0; i < NumArgsTested(); i++) {
class_ids->Add(Smi::Value(Smi::RawCast(data.At(data_pos++))));
@@ -13462,7 +13462,7 @@
ASSERT(class_id != NULL);
ASSERT(target != NULL);
ASSERT(NumArgsTested() == 1);
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
const intptr_t data_pos = index * TestEntryLength();
*class_id = Smi::Value(Smi::RawCast(data.At(data_pos)));
*target ^= data.At(data_pos + 1);
@@ -13470,7 +13470,7 @@
intptr_t ICData::GetCidAt(intptr_t index) const {
ASSERT(NumArgsTested() == 1);
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
const intptr_t data_pos = index * TestEntryLength();
return Smi::Value(Smi::RawCast(data.At(data_pos)));
}
@@ -13486,17 +13486,17 @@
ASSERT(!IsSentinelAt(index));
const intptr_t data_pos = index * TestEntryLength();
NoSafepointScope no_safepoint;
- RawArray* raw_data = ic_data();
+ RawArray* raw_data = entries();
return Smi::Value(Smi::RawCast(raw_data->ptr()->data()[data_pos]));
}
RawFunction* ICData::GetTargetAt(intptr_t index) const {
ASSERT(Isolate::Current()->compilation_allowed());
const intptr_t data_pos = index * TestEntryLength() + NumArgsTested();
- ASSERT(Object::Handle(Array::Handle(ic_data()).At(data_pos)).IsFunction());
+ ASSERT(Object::Handle(Array::Handle(entries()).At(data_pos)).IsFunction());
NoSafepointScope no_safepoint;
- RawArray* raw_data = ic_data();
+ RawArray* raw_data = entries();
return reinterpret_cast<RawFunction*>(raw_data->ptr()->data()[data_pos]);
}
@@ -13504,7 +13504,7 @@
const intptr_t data_pos = index * TestEntryLength() + NumArgsTested();
NoSafepointScope no_safepoint;
- RawArray* raw_data = ic_data();
+ RawArray* raw_data = entries();
return raw_data->ptr()->data()[data_pos];
}
@@ -13518,7 +13518,7 @@
ASSERT(0 <= value);
ASSERT(value <= Smi::kMaxValue);
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
const intptr_t data_pos =
index * TestEntryLength() + CountIndexFor(NumArgsTested());
data.SetAt(data_pos, Smi::Handle(Smi::New(value)));
@@ -13526,7 +13526,7 @@
intptr_t ICData::GetCountAt(intptr_t index) const {
ASSERT(Isolate::Current()->compilation_allowed());
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
const intptr_t data_pos =
index * TestEntryLength() + CountIndexFor(NumArgsTested());
intptr_t value = Smi::Value(Smi::RawCast(data.At(data_pos)));
@@ -13550,7 +13550,7 @@
void ICData::SetCodeAt(intptr_t index, const Code& value) const {
ASSERT(!Isolate::Current()->compilation_allowed());
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
const intptr_t data_pos =
index * TestEntryLength() + CodeIndexFor(NumArgsTested());
data.SetAt(data_pos, value);
@@ -13558,7 +13558,7 @@
void ICData::SetEntryPointAt(intptr_t index, const Smi& value) const {
ASSERT(!Isolate::Current()->compilation_allowed());
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
const intptr_t data_pos =
index * TestEntryLength() + EntryPointIndexFor(NumArgsTested());
data.SetAt(data_pos, value);
@@ -13693,7 +13693,7 @@
pos += result.TestEntryLength();
}
WriteSentinel(data, result.TestEntryLength());
- result.set_ic_data_array(data);
+ result.set_entries(data);
ASSERT(result.NumberOfChecksIs(aggregate.length()));
return result.raw();
}
@@ -13851,7 +13851,7 @@
}
bool ICData::IsImmutable() const {
- const Array& data = Array::Handle(ic_data());
+ const Array& data = Array::Handle(entries());
return data.IsImmutable();
}
@@ -13881,7 +13881,7 @@
zone,
NewDescriptor(zone, owner, target_name, arguments_descriptor, deopt_id,
num_args_tested, rebind_rule, static_receiver_type));
- result.set_ic_data_array(Array::Handle(
+ result.set_entries(Array::Handle(
zone,
CachedEmptyICDataArray(num_args_tested, result.IsTrackingExactness())));
return result.raw();
@@ -13908,7 +13908,7 @@
from.NumArgsTested(), from.rebind_rule(),
AbstractType::Handle(from.StaticReceiverType())));
// Clone entry array.
- const Array& from_array = Array::Handle(zone, from.ic_data());
+ const Array& from_array = Array::Handle(zone, from.entries());
const intptr_t len = from_array.Length();
const Array& cloned_array = Array::Handle(zone, Array::New(len, Heap::kOld));
Object& obj = Object::Handle(zone);
@@ -13916,7 +13916,7 @@
obj = from_array.At(i);
cloned_array.SetAt(i, obj);
}
- result.set_ic_data_array(cloned_array);
+ result.set_entries(cloned_array);
// Copy deoptimization reasons.
result.SetDeoptReasons(from.DeoptReasons());
return result.raw();
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index e37a4d8..f549675 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -1690,7 +1690,7 @@
return OFFSET_OF(RawICData, args_descriptor_);
}
- static intptr_t ic_data_offset() { return OFFSET_OF(RawICData, ic_data_); }
+ static intptr_t entries_offset() { return OFFSET_OF(RawICData, entries_); }
static intptr_t owner_offset() { return OFFSET_OF(RawICData, owner_); }
@@ -1854,8 +1854,8 @@
private:
static RawICData* New();
- RawArray* ic_data() const {
- return AtomicOperations::LoadAcquire(&raw_ptr()->ic_data_);
+ RawArray* entries() const {
+ return AtomicOperations::LoadAcquire(&raw_ptr()->entries_);
}
// Grows the array and also sets the argument to the index that should be used
@@ -1867,7 +1867,7 @@
void set_arguments_descriptor(const Array& value) const;
void set_deopt_id(intptr_t value) const;
void SetNumArgsTested(intptr_t value) const;
- void set_ic_data_array(const Array& value) const;
+ void set_entries(const Array& value) const;
void set_state_bits(uint32_t bits) const;
bool ValidateInterceptor(const Function& target) const;
diff --git a/runtime/vm/object_reload.cc b/runtime/vm/object_reload.cc
index 4082a1b..ffd3cb9 100644
--- a/runtime/vm/object_reload.cc
+++ b/runtime/vm/object_reload.cc
@@ -725,7 +725,7 @@
// count.
ClearCountAt(0);
WriteSentinelAt(1);
- const Array& array = Array::Handle(ic_data());
+ const Array& array = Array::Handle(entries());
array.Truncate(2 * TestEntryLength());
return;
}
@@ -733,7 +733,7 @@
}
const Array& data_array = Array::Handle(
zone, CachedEmptyICDataArray(num_args, tracking_exactness));
- set_ic_data_array(data_array);
+ set_entries(data_array);
return;
} else if (rule == kNoRebind || rule == kNSMDispatch) {
// TODO(30877) we should account for addition/removal of NSM.
diff --git a/runtime/vm/object_service.cc b/runtime/vm/object_service.cc
index 74cf668..fda5543 100644
--- a/runtime/vm/object_service.cc
+++ b/runtime/vm/object_service.cc
@@ -758,7 +758,7 @@
}
jsobj.AddProperty("_argumentsDescriptor",
Object::Handle(arguments_descriptor()));
- jsobj.AddProperty("_entries", Object::Handle(ic_data()));
+ jsobj.AddProperty("_entries", Object::Handle(entries()));
}
void ICData::PrintToJSONArray(const JSONArray& jsarray,
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 68f90fd..69ddef8 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -1674,8 +1674,8 @@
class RawICData : public RawObject {
RAW_HEAP_OBJECT_IMPLEMENTATION(ICData);
- VISIT_FROM(RawObject*, ic_data_);
- RawArray* ic_data_; // Contains class-ids, target and count.
+ VISIT_FROM(RawObject*, entries_);
+ RawArray* entries_; // Contains class-ids, target and count.
RawString* target_name_; // Name of target function.
RawArray* args_descriptor_; // Arguments descriptor.
// Static type of the receiver. If it is set then we are performing
diff --git a/runtime/vm/raw_object_fields.cc b/runtime/vm/raw_object_fields.cc
index 6f01dd9..e5df251 100644
--- a/runtime/vm/raw_object_fields.cc
+++ b/runtime/vm/raw_object_fields.cc
@@ -114,7 +114,7 @@
F(SingleTargetCache, target_) \
F(UnlinkedCall, target_name_) \
F(UnlinkedCall, args_descriptor_) \
- F(ICData, ic_data_) \
+ F(ICData, entries_) \
F(ICData, target_name_) \
F(ICData, args_descriptor_) \
F(ICData, owner_) \
@@ -139,11 +139,14 @@
F(TypeArguments, length_) \
F(TypeArguments, hash_) \
F(AbstractType, type_test_stub_) \
+ F(Type, type_test_stub_) \
F(Type, type_class_id_) \
F(Type, arguments_) \
F(Type, hash_) \
F(Type, signature_) \
+ F(TypeRef, type_test_stub_) \
F(TypeRef, type_) \
+ F(TypeParameter, type_test_stub_) \
F(TypeParameter, name_) \
F(TypeParameter, hash_) \
F(TypeParameter, bound_) \
diff --git a/runtime/vm/simulator_dbc.cc b/runtime/vm/simulator_dbc.cc
index d54f8b5..b059dae 100644
--- a/runtime/vm/simulator_dbc.cc
+++ b/runtime/vm/simulator_dbc.cc
@@ -847,7 +847,7 @@
const intptr_t kCheckedArgs = 1;
RawObject** args = call_base;
- RawArray* cache = icdata->ptr()->ic_data_->ptr();
+ RawArray* cache = icdata->ptr()->entries_->ptr();
const intptr_t type_args_len =
SimulatorHelpers::ArgDescTypeArgsLen(icdata->ptr()->args_descriptor_);
@@ -891,7 +891,7 @@
const intptr_t kCheckedArgs = 2;
RawObject** args = call_base;
- RawArray* cache = icdata->ptr()->ic_data_->ptr();
+ RawArray* cache = icdata->ptr()->entries_->ptr();
const intptr_t type_args_len =
SimulatorHelpers::ArgDescTypeArgsLen(icdata->ptr()->args_descriptor_);
@@ -1067,7 +1067,7 @@
ASSERT(SimulatorBytecode::IsCallOpcode(*pc)); \
const uint16_t kidx = SimulatorBytecode::DecodeD(*pc); \
const RawICData* icdata = RAW_CAST(ICData, LOAD_CONSTANT(kidx)); \
- RawObject** entries = icdata->ptr()->ic_data_->ptr()->data(); \
+ RawObject** entries = icdata->ptr()->entries_->ptr()->data(); \
SimulatorHelpers::IncrementICUsageCount(entries, 0, 2); \
} while (0);
@@ -1669,7 +1669,7 @@
// Look up the function in the ICData.
RawObject* ic_data_obj = SP[0];
RawICData* ic_data = RAW_CAST(ICData, ic_data_obj);
- RawObject** data = ic_data->ptr()->ic_data_->ptr()->data();
+ RawObject** data = ic_data->ptr()->entries_->ptr()->data();
SimulatorHelpers::IncrementICUsageCount(data, 0, 0);
SP[0] = data[ICData::TargetIndexFor(ic_data->ptr()->state_bits_ & 0x3)];
RawObject** call_base = SP - argc;
diff --git a/runtime/vm/thread_test.cc b/runtime/vm/thread_test.cc
index d71628e..7eeb900 100644
--- a/runtime/vm/thread_test.cc
+++ b/runtime/vm/thread_test.cc
@@ -420,7 +420,7 @@
for (intptr_t cnt = 0; cnt < 0x1000; cnt++) {
for (intptr_t i = 0; i < len_; i++) {
ic_data ^= ic_datas_.AtAcquire(i);
- arr = ic_data.ic_data();
+ arr = ic_data.entries();
intptr_t num_checks = arr.Length() / 3;
if (num_checks < 0 || num_checks > 5) {
OS::PrintErr("Failure: %" Pd " checks!\n", num_checks);