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

Unified Diff: runtime/vm/object.cc

Issue 2326483005: Shrink AOT snapshot size and memory usage. (Closed)
Patch Set: . Created 4 years, 3 months 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
Index: runtime/vm/object.cc
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 4ed0793fa99666770af0f9bd18773f57af2726bb..cfb435779f0cec5208e0365cee5029c8a4ca7621 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -5299,9 +5299,13 @@ bool Function::HasCode() const {
void Function::ClearCode() const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
ASSERT(Thread::Current()->IsMutatorThread());
StorePointer(&raw_ptr()->unoptimized_code_, Code::null());
SetInstructions(Code::Handle(StubCode::LazyCompile_entry()->code()));
+#endif
}
@@ -5373,9 +5377,13 @@ void Function::SwitchToLazyCompiledUnoptimizedCode() const {
void Function::set_unoptimized_code(const Code& value) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
ASSERT(Thread::Current()->IsMutatorThread());
ASSERT(value.IsNull() || !value.is_optimized());
StorePointer(&raw_ptr()->unoptimized_code_, value.raw());
+#endif
}
@@ -5871,8 +5879,12 @@ void Function::set_recognized_kind(MethodRecognizer::Kind value) const {
void Function::set_token_pos(TokenPosition token_pos) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
ASSERT(!token_pos.IsClassifying() || IsMethodExtractor());
StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
+#endif
}
@@ -6527,16 +6539,16 @@ RawFunction* Function::New(const String& name,
result.set_is_generated_body(false);
result.set_always_inline(false);
result.set_is_polymorphic_target(false);
- result.set_was_compiled(false);
+ NOT_IN_PRECOMPILED(result.set_was_compiled(false));
result.set_owner(owner);
- result.set_token_pos(token_pos);
- result.set_end_token_pos(token_pos);
+ NOT_IN_PRECOMPILED(result.set_token_pos(token_pos));
+ NOT_IN_PRECOMPILED(result.set_end_token_pos(token_pos));
result.set_num_fixed_parameters(0);
result.set_num_optional_parameters(0);
- result.set_usage_counter(0);
- result.set_deoptimization_counter(0);
- result.set_optimized_instruction_count(0);
- result.set_optimized_call_site_count(0);
+ NOT_IN_PRECOMPILED(result.set_usage_counter(0));
+ NOT_IN_PRECOMPILED(result.set_deoptimization_counter(0));
+ NOT_IN_PRECOMPILED(result.set_optimized_instruction_count(0));
+ NOT_IN_PRECOMPILED(result.set_optimized_call_site_count(0));
result.set_is_optimizable(is_native ? false : true);
result.set_is_inlinable(true);
result.set_allows_hoisting_check_class(true);
@@ -12599,8 +12611,12 @@ void ICData::set_arguments_descriptor(const Array& value) const {
void ICData::set_deopt_id(intptr_t value) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
ASSERT(value <= kMaxInt32);
StoreNonPointer(&raw_ptr()->deopt_id_, value);
+#endif
}
@@ -13512,7 +13528,7 @@ RawICData* ICData::NewDescriptor(Zone* zone,
result.set_owner(owner);
result.set_target_name(target_name);
result.set_arguments_descriptor(arguments_descriptor);
- result.set_deopt_id(deopt_id);
+ NOT_IN_PRECOMPILED(result.set_deopt_id(deopt_id));
result.set_state_bits(0);
#if defined(TAG_IC_DATA)
result.set_tag(-1);
@@ -13700,13 +13716,21 @@ void Code::set_stackmaps(const Array& maps) const {
void Code::set_deopt_info_array(const Array& array) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
ASSERT(array.IsOld());
StorePointer(&raw_ptr()->deopt_info_array_, array.raw());
+#endif
}
void Code::set_static_calls_target_table(const Array& value) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
StorePointer(&raw_ptr()->static_calls_target_table_, value.raw());
+#endif
#if defined(DEBUG)
// Check that the table is sorted by pc offsets.
// FlowGraphCompiler::AddStaticCallTarget adds pc-offsets to the table while
@@ -13769,6 +13793,9 @@ RawTypedData* Code::GetDeoptInfoAtPc(uword pc,
intptr_t Code::BinarySearchInSCallTable(uword pc) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
NoSafepointScope no_safepoint;
const Array& table = Array::Handle(raw_ptr()->static_calls_target_table_);
RawObject* key = reinterpret_cast<RawObject*>(Smi::New(pc - PayloadStart()));
@@ -13786,11 +13813,16 @@ intptr_t Code::BinarySearchInSCallTable(uword pc) const {
return real_index;
}
}
+#endif
return -1;
}
RawFunction* Code::GetStaticCallTargetFunctionAt(uword pc) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+ return Function::null();
+#else
const intptr_t i = BinarySearchInSCallTable(pc);
if (i < 0) {
return Function::null();
@@ -13800,10 +13832,15 @@ RawFunction* Code::GetStaticCallTargetFunctionAt(uword pc) const {
Function& function = Function::Handle();
function ^= array.At(i + kSCallTableFunctionEntry);
return function.raw();
+#endif
}
RawCode* Code::GetStaticCallTargetCodeAt(uword pc) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+ return Code::null();
+#else
const intptr_t i = BinarySearchInSCallTable(pc);
if (i < 0) {
return Code::null();
@@ -13813,10 +13850,14 @@ RawCode* Code::GetStaticCallTargetCodeAt(uword pc) const {
Code& code = Code::Handle();
code ^= array.At(i + kSCallTableCodeEntry);
return code.raw();
+#endif
}
void Code::SetStaticCallTargetCodeAt(uword pc, const Code& code) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
const intptr_t i = BinarySearchInSCallTable(pc);
ASSERT(i >= 0);
const Array& array =
@@ -13824,10 +13865,14 @@ void Code::SetStaticCallTargetCodeAt(uword pc, const Code& code) const {
ASSERT(code.IsNull() ||
(code.function() == array.At(i + kSCallTableFunctionEntry)));
array.SetAt(i + kSCallTableCodeEntry, code);
+#endif
}
void Code::SetStubCallTargetCodeAt(uword pc, const Code& code) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
const intptr_t i = BinarySearchInSCallTable(pc);
ASSERT(i >= 0);
const Array& array =
@@ -13841,6 +13886,7 @@ void Code::SetStubCallTargetCodeAt(uword pc, const Code& code) const {
}
#endif
array.SetAt(i + kSCallTableCodeEntry, code);
+#endif
}
@@ -13861,26 +13907,41 @@ void Code::Disassemble(DisassemblyFormatter* formatter) const {
const Code::Comments& Code::comments() const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ Comments* comments = new Code::Comments(Array::Handle());
+#else
Comments* comments = new Code::Comments(Array::Handle(raw_ptr()->comments_));
+#endif
return *comments;
}
void Code::set_comments(const Code::Comments& comments) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
ASSERT(comments.comments_.IsOld());
StorePointer(&raw_ptr()->comments_, comments.comments_.raw());
+#endif
}
void Code::SetPrologueOffset(intptr_t offset) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
ASSERT(offset >= 0);
StoreSmi(
reinterpret_cast<RawSmi* const *>(&raw_ptr()->return_address_metadata_),
Smi::New(offset));
+#endif
}
intptr_t Code::GetPrologueOffset() const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ return -1;
+#else
const Object& object = Object::Handle(raw_ptr()->return_address_metadata_);
// In the future we may put something other than a smi in
// |return_address_metadata_|.
@@ -13888,20 +13949,28 @@ intptr_t Code::GetPrologueOffset() const {
return -1;
}
return Smi::Cast(object).Value();
+#endif
}
RawArray* Code::GetInlinedIntervals() const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ return Array::null();
+#else
const Array& metadata = Array::Handle(raw_ptr()->inlined_metadata_);
if (metadata.IsNull()) {
return metadata.raw();
}
return reinterpret_cast<RawArray*>(
metadata.At(RawCode::kInlinedIntervalsIndex));
+#endif
}
void Code::SetInlinedIntervals(const Array& value) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
if (raw_ptr()->inlined_metadata_ == Array::null()) {
StorePointer(&raw_ptr()->inlined_metadata_,
Array::New(RawCode::kInlinedMetadataSize, Heap::kOld));
@@ -13911,20 +13980,28 @@ void Code::SetInlinedIntervals(const Array& value) const {
ASSERT(metadata.IsOld());
ASSERT(value.IsOld());
metadata.SetAt(RawCode::kInlinedIntervalsIndex, value);
+#endif
}
RawArray* Code::GetInlinedIdToFunction() const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ return Array::null();
+#else
const Array& metadata = Array::Handle(raw_ptr()->inlined_metadata_);
if (metadata.IsNull()) {
return metadata.raw();
}
return reinterpret_cast<RawArray*>(
metadata.At(RawCode::kInlinedIdToFunctionIndex));
+#endif
}
void Code::SetInlinedIdToFunction(const Array& value) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
if (raw_ptr()->inlined_metadata_ == Array::null()) {
StorePointer(&raw_ptr()->inlined_metadata_,
Array::New(RawCode::kInlinedMetadataSize, Heap::kOld));
@@ -13934,20 +14011,28 @@ void Code::SetInlinedIdToFunction(const Array& value) const {
ASSERT(metadata.IsOld());
ASSERT(value.IsOld());
metadata.SetAt(RawCode::kInlinedIdToFunctionIndex, value);
+#endif
}
RawArray* Code::GetInlinedIdToTokenPos() const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ return Array::null();
+#else
const Array& metadata = Array::Handle(raw_ptr()->inlined_metadata_);
if (metadata.IsNull()) {
return metadata.raw();
}
return reinterpret_cast<RawArray*>(
metadata.At(RawCode::kInlinedIdToTokenPosIndex));
+#endif
}
void Code::SetInlinedIdToTokenPos(const Array& value) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
if (raw_ptr()->inlined_metadata_ == Array::null()) {
StorePointer(&raw_ptr()->inlined_metadata_,
Array::New(RawCode::kInlinedMetadataSize, Heap::kOld));
@@ -13957,20 +14042,28 @@ void Code::SetInlinedIdToTokenPos(const Array& value) const {
ASSERT(metadata.IsOld());
ASSERT(value.IsOld());
metadata.SetAt(RawCode::kInlinedIdToTokenPosIndex, value);
+#endif
}
RawArray* Code::GetInlinedCallerIdMap() const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ return Array::null();
+#else
const Array& metadata = Array::Handle(raw_ptr()->inlined_metadata_);
if (metadata.IsNull()) {
return metadata.raw();
}
return reinterpret_cast<RawArray*>(
metadata.At(RawCode::kInlinedCallerIdMapIndex));
+#endif
}
void Code::SetInlinedCallerIdMap(const Array& value) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
if (raw_ptr()->inlined_metadata_ == Array::null()) {
StorePointer(&raw_ptr()->inlined_metadata_,
Array::New(RawCode::kInlinedMetadataSize, Heap::kOld));
@@ -13980,6 +14073,7 @@ void Code::SetInlinedCallerIdMap(const Array& value) const {
ASSERT(metadata.IsOld());
ASSERT(value.IsOld());
metadata.SetAt(RawCode::kInlinedCallerIdMapIndex, value);
+#endif
}
@@ -14296,6 +14390,9 @@ void Code::DisableStubCode() const {
void Code::SetActiveInstructions(RawInstructions* instructions) const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ UNREACHABLE();
+#else
DEBUG_ASSERT(IsMutatorOrAtSafepoint() || !is_alive());
// RawInstructions are never allocated in New space and hence a
// store buffer update is not needed here.
@@ -14304,6 +14401,7 @@ void Code::SetActiveInstructions(RawInstructions* instructions) const {
Instructions::UncheckedEntryPoint(instructions));
StoreNonPointer(&raw_ptr()->checked_entry_point_,
Instructions::CheckedEntryPoint(instructions));
+#endif
}

Powered by Google App Engine
This is Rietveld 408576698