Index: runtime/vm/object.cc |
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc |
index 7d8acc3f24611b2e22085ac1ab08831a58dcee79..1e78ab07d260c2aafb5049b5759bd5c6a008a8b3 100644 |
--- a/runtime/vm/object.cc |
+++ b/runtime/vm/object.cc |
@@ -3426,7 +3426,7 @@ TokenPosition Class::ComputeEndTokenPos() const { |
ASSERT(!scr.IsNull()); |
const TokenStream& tkns = TokenStream::Handle(scr.tokens()); |
if (tkns.IsNull()) { |
- ASSERT(Dart::IsRunningPrecompiledCode()); |
+ ASSERT(Dart::snapshot_kind() == Snapshot::kAppNoJIT); |
return TokenPosition::kNoSource; |
} |
TokenStream::Iterator tkit(tkns, |
@@ -8822,7 +8822,7 @@ RawString* Script::Source() const { |
RawString* Script::GenerateSource() const { |
const TokenStream& token_stream = TokenStream::Handle(tokens()); |
if (token_stream.IsNull()) { |
- ASSERT(Dart::IsRunningPrecompiledCode()); |
+ ASSERT(Dart::snapshot_kind() == Snapshot::kAppNoJIT); |
return String::null(); |
} |
return token_stream.GenerateSource(); |
@@ -8991,7 +8991,7 @@ void Script::GetTokenLocation(TokenPosition token_pos, |
ASSERT(line != NULL); |
const TokenStream& tkns = TokenStream::Handle(tokens()); |
if (tkns.IsNull()) { |
- ASSERT(Dart::IsRunningPrecompiledCode()); |
+ ASSERT(Dart::snapshot_kind() == Snapshot::kAppNoJIT); |
*line = -1; |
if (column != NULL) { |
*column = -1; |
@@ -9090,7 +9090,7 @@ void Script::TokenRangeAtLine(intptr_t line_number, |
RawString* Script::GetLine(intptr_t line_number, Heap::Space space) const { |
const String& src = String::Handle(Source()); |
if (src.IsNull()) { |
- ASSERT(Dart::IsRunningPrecompiledCode()); |
+ ASSERT(Dart::snapshot_kind() == Snapshot::kAppNoJIT); |
return Symbols::OptimizedOut().raw(); |
} |
intptr_t relative_line_number = line_number - line_offset(); |
@@ -9132,7 +9132,7 @@ RawString* Script::GetSnippet(intptr_t from_line, |
intptr_t to_column) const { |
const String& src = String::Handle(Source()); |
if (src.IsNull()) { |
- ASSERT(Dart::IsRunningPrecompiledCode()); |
+ ASSERT(Dart::snapshot_kind() == Snapshot::kAppNoJIT); |
return Symbols::OptimizedOut().raw(); |
} |
intptr_t length = src.Length(); |
@@ -10981,7 +10981,7 @@ bool LibraryPrefix::LoadLibrary() const { |
} |
ASSERT(is_deferred_load()); |
ASSERT(num_imports() == 1); |
- if (Dart::IsRunningPrecompiledCode()) { |
+ if (Dart::snapshot_kind() == Snapshot::kAppNoJIT) { |
// The library list was tree-shaken away. |
this->set_is_loaded(); |
return true; |
@@ -13525,26 +13525,6 @@ void Code::set_static_calls_target_table(const Array& value) const { |
} |
-uword Code::EntryPoint() const { |
- RawObject* instr = instructions(); |
- if (!instr->IsHeapObject()) { |
- return active_entry_point(); |
- } else { |
- return Instructions::EntryPoint(instructions()); |
- } |
-} |
- |
- |
-intptr_t Code::Size() const { |
- RawObject* instr = instructions(); |
- if (!instr->IsHeapObject()) { |
- return Smi::Value(raw_ptr()->precompiled_instructions_size_); |
- } else { |
- return instructions()->ptr()->size_; |
- } |
-} |
- |
- |
bool Code::HasBreakpoint() const { |
if (!FLAG_support_debugger) { |
return false; |
@@ -13570,7 +13550,7 @@ RawTypedData* Code::GetDeoptInfoAtPc(uword pc, |
uword code_entry = instrs.EntryPoint(); |
const Array& table = Array::Handle(deopt_info_array()); |
if (table.IsNull()) { |
- ASSERT(Dart::IsRunningPrecompiledCode()); |
+ ASSERT(Dart::snapshot_kind() == Snapshot::kAppNoJIT); |
return TypedData::null(); |
} |
// Linear search for the PC offset matching the target PC. |
@@ -13890,13 +13870,10 @@ RawCode* Code::FinalizeCode(const char* name, |
} |
// Hook up Code and Instructions objects. |
- code.set_instructions(instrs.raw()); |
code.SetActiveInstructions(instrs.raw()); |
+ code.set_instructions(instrs.raw()); |
code.set_is_alive(true); |
- ASSERT(code.EntryPoint() == instrs.EntryPoint()); |
- ASSERT(code.Size() == instrs.size()); |
- |
// Set object pool in Instructions object. |
INC_STAT(Thread::Current(), |
total_code_size, object_pool.Length() * sizeof(uintptr_t)); |
@@ -14099,10 +14076,9 @@ bool Code::IsFunctionCode() const { |
void Code::DisableDartCode() const { |
DEBUG_ASSERT(IsMutatorOrAtSafepoint()); |
ASSERT(IsFunctionCode()); |
- ASSERT(!IsDisabled()); |
+ ASSERT(instructions() == active_instructions()); |
const Code& new_code = |
Code::Handle(StubCode::FixCallersTarget_entry()->code()); |
- ASSERT(new_code.instructions()->IsVMHeapObject()); |
SetActiveInstructions(new_code.instructions()); |
} |
@@ -14111,10 +14087,9 @@ void Code::DisableStubCode() const { |
#if !defined(TARGET_ARCH_DBC) |
ASSERT(Thread::Current()->IsMutatorThread()); |
ASSERT(IsAllocationStubCode()); |
- ASSERT(!IsDisabled()); |
+ ASSERT(instructions() == active_instructions()); |
const Code& new_code = |
Code::Handle(StubCode::FixAllocationStubTarget_entry()->code()); |
- ASSERT(new_code.instructions()->IsVMHeapObject()); |
SetActiveInstructions(new_code.instructions()); |
#else |
// DBC does not use allocation stubs. |
@@ -14127,6 +14102,7 @@ void Code::SetActiveInstructions(RawInstructions* instructions) const { |
DEBUG_ASSERT(IsMutatorOrAtSafepoint() || !is_alive()); |
// RawInstructions are never allocated in New space and hence a |
// store buffer update is not needed here. |
+ StorePointer(&raw_ptr()->active_instructions_, instructions); |
StoreNonPointer(&raw_ptr()->entry_point_, |
reinterpret_cast<uword>(instructions->ptr()) + |
Instructions::HeaderSize()); |