| Index: runtime/vm/object.cc
|
| diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
|
| index 52c92e2face95c1fb801fa3d09b2d09cd3cd95a8..dcc5f428be578aa8f0adc44ef513160ec12944e7 100644
|
| --- a/runtime/vm/object.cc
|
| +++ b/runtime/vm/object.cc
|
| @@ -11841,6 +11841,10 @@ void Namespace::AddMetadata(const Object& owner, TokenPosition token_pos) {
|
|
|
|
|
| RawObject* Namespace::GetMetadata() const {
|
| +#if defined(DART_PRECOMPILED_RUNTIME)
|
| + COMPILE_ASSERT(!FLAG_enable_mirrors);
|
| + return Object::empty_array().raw();
|
| +#else
|
| Field& field = Field::Handle(metadata_field());
|
| if (field.IsNull()) {
|
| // There is no metadata for this object.
|
| @@ -11856,6 +11860,7 @@ RawObject* Namespace::GetMetadata() const {
|
| }
|
| }
|
| return metadata.raw();
|
| +#endif // defined(DART_PRECOMPILED_RUNTIME)
|
| }
|
|
|
|
|
| @@ -12980,111 +12985,6 @@ const char* ExceptionHandlers::ToCString() const {
|
| }
|
|
|
|
|
| -intptr_t DeoptInfo::FrameSize(const TypedData& packed) {
|
| - NoSafepointScope no_safepoint;
|
| - typedef ReadStream::Raw<sizeof(intptr_t), intptr_t> Reader;
|
| - ReadStream read_stream(reinterpret_cast<uint8_t*>(packed.DataAddr(0)),
|
| - packed.LengthInBytes());
|
| - return Reader::Read(&read_stream);
|
| -}
|
| -
|
| -
|
| -intptr_t DeoptInfo::NumMaterializations(
|
| - const GrowableArray<DeoptInstr*>& unpacked) {
|
| - intptr_t num = 0;
|
| - while (unpacked[num]->kind() == DeoptInstr::kMaterializeObject) {
|
| - num++;
|
| - }
|
| - return num;
|
| -}
|
| -
|
| -
|
| -void DeoptInfo::UnpackInto(const Array& table,
|
| - const TypedData& packed,
|
| - GrowableArray<DeoptInstr*>* unpacked,
|
| - intptr_t length) {
|
| - NoSafepointScope no_safepoint;
|
| - typedef ReadStream::Raw<sizeof(intptr_t), intptr_t> Reader;
|
| - ReadStream read_stream(reinterpret_cast<uint8_t*>(packed.DataAddr(0)),
|
| - packed.LengthInBytes());
|
| - const intptr_t frame_size = Reader::Read(&read_stream); // Skip frame size.
|
| - USE(frame_size);
|
| -
|
| - const intptr_t suffix_length = Reader::Read(&read_stream);
|
| - if (suffix_length != 0) {
|
| - ASSERT(suffix_length > 1);
|
| - const intptr_t info_number = Reader::Read(&read_stream);
|
| -
|
| - TypedData& suffix = TypedData::Handle();
|
| - Smi& offset = Smi::Handle();
|
| - Smi& reason_and_flags = Smi::Handle();
|
| - DeoptTable::GetEntry(table, info_number, &offset, &suffix,
|
| - &reason_and_flags);
|
| - UnpackInto(table, suffix, unpacked, suffix_length);
|
| - }
|
| -
|
| - while ((read_stream.PendingBytes() > 0) && (unpacked->length() < length)) {
|
| - const intptr_t instruction = Reader::Read(&read_stream);
|
| - const intptr_t from_index = Reader::Read(&read_stream);
|
| - unpacked->Add(DeoptInstr::Create(instruction, from_index));
|
| - }
|
| -}
|
| -
|
| -
|
| -void DeoptInfo::Unpack(const Array& table,
|
| - const TypedData& packed,
|
| - GrowableArray<DeoptInstr*>* unpacked) {
|
| - ASSERT(unpacked->is_empty());
|
| -
|
| - // Pass kMaxInt32 as the length to unpack all instructions from the
|
| - // packed stream.
|
| - UnpackInto(table, packed, unpacked, kMaxInt32);
|
| -
|
| - unpacked->Reverse();
|
| -}
|
| -
|
| -
|
| -const char* DeoptInfo::ToCString(const Array& deopt_table,
|
| - const TypedData& packed) {
|
| -#define FORMAT "[%s]"
|
| - GrowableArray<DeoptInstr*> deopt_instrs;
|
| - Unpack(deopt_table, packed, &deopt_instrs);
|
| -
|
| - // Compute the buffer size required.
|
| - intptr_t len = 1; // Trailing '\0'.
|
| - for (intptr_t i = 0; i < deopt_instrs.length(); i++) {
|
| - len += OS::SNPrint(NULL, 0, FORMAT, deopt_instrs[i]->ToCString());
|
| - }
|
| -
|
| - // Allocate the buffer.
|
| - char* buffer = Thread::Current()->zone()->Alloc<char>(len);
|
| -
|
| - // Layout the fields in the buffer.
|
| - intptr_t index = 0;
|
| - for (intptr_t i = 0; i < deopt_instrs.length(); i++) {
|
| - index += OS::SNPrint((buffer + index), (len - index), FORMAT,
|
| - deopt_instrs[i]->ToCString());
|
| - }
|
| -
|
| - return buffer;
|
| -#undef FORMAT
|
| -}
|
| -
|
| -
|
| -// Returns a bool so it can be asserted.
|
| -bool DeoptInfo::VerifyDecompression(const GrowableArray<DeoptInstr*>& original,
|
| - const Array& deopt_table,
|
| - const TypedData& packed) {
|
| - GrowableArray<DeoptInstr*> unpacked;
|
| - Unpack(deopt_table, packed, &unpacked);
|
| - ASSERT(unpacked.length() == original.length());
|
| - for (intptr_t i = 0; i < unpacked.length(); ++i) {
|
| - ASSERT(unpacked[i]->Equals(*original[i]));
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -
|
| void SingleTargetCache::set_target(const Code& value) const {
|
| StorePointer(&raw_ptr()->target_, value.raw());
|
| }
|
| @@ -14354,6 +14254,10 @@ bool Code::HasBreakpoint() const {
|
| RawTypedData* Code::GetDeoptInfoAtPc(uword pc,
|
| ICData::DeoptReasonId* deopt_reason,
|
| uint32_t* deopt_flags) const {
|
| +#if defined(DART_PRECOMPILED_RUNTIME)
|
| + ASSERT(Dart::vm_snapshot_kind() == Snapshot::kFullAOT);
|
| + return TypedData::null();
|
| +#else
|
| ASSERT(is_optimized());
|
| const Instructions& instrs = Instructions::Handle(instructions());
|
| uword code_entry = instrs.PayloadStart();
|
| @@ -14378,6 +14282,7 @@ RawTypedData* Code::GetDeoptInfoAtPc(uword pc,
|
| }
|
| *deopt_reason = ICData::kDeoptUnknown;
|
| return TypedData::null();
|
| +#endif // defined(DART_PRECOMPILED_RUNTIME)
|
| }
|
|
|
|
|
|
|