Index: runtime/vm/object.h |
diff --git a/runtime/vm/object.h b/runtime/vm/object.h |
index b502dfcd3558f8c4d33e5a19a39bdbc8c12f8267..6697e5c55b39e2d4718c7f89b5c995b98394e73b 100644 |
--- a/runtime/vm/object.h |
+++ b/runtime/vm/object.h |
@@ -1886,7 +1886,12 @@ class ICData : public Object { |
intptr_t NumArgsTested() const; |
intptr_t deopt_id() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+ return -1; |
+#else |
return raw_ptr()->deopt_id_; |
+#endif |
} |
bool IsImmutable() const; |
@@ -2307,7 +2312,13 @@ class Function : public Object { |
return raw_ptr()->code_; |
} |
- RawCode* unoptimized_code() const { return raw_ptr()->unoptimized_code_; } |
+ RawCode* unoptimized_code() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ return static_cast<RawCode*>(Object::null()); |
+#else |
+ return raw_ptr()->unoptimized_code_; |
+#endif |
+ } |
void set_unoptimized_code(const Code& value) const; |
bool HasCode() const; |
@@ -2441,12 +2452,28 @@ class Function : public Object { |
} |
bool IsInFactoryScope() const; |
- TokenPosition token_pos() const { return raw_ptr()->token_pos_; } |
+ TokenPosition token_pos() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ return TokenPosition(); |
+#else |
+ return raw_ptr()->token_pos_; |
+#endif |
+ } |
void set_token_pos(TokenPosition value) const; |
- TokenPosition end_token_pos() const { return raw_ptr()->end_token_pos_; } |
+ TokenPosition end_token_pos() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ return TokenPosition(); |
+#else |
+ return raw_ptr()->end_token_pos_; |
+#endif |
+} |
void set_end_token_pos(TokenPosition value) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
StoreNonPointer(&raw_ptr()->end_token_pos_, value); |
+#endif |
} |
intptr_t num_fixed_parameters() const { |
@@ -2484,48 +2511,86 @@ class Function : public Object { |
intptr_t NumImplicitParameters() const; |
static intptr_t usage_counter_offset() { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+ return 0; |
+#else |
return OFFSET_OF(RawFunction, usage_counter_); |
+#endif |
} |
intptr_t usage_counter() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ return 0; |
+#else |
return raw_ptr()->usage_counter_; |
+#endif |
} |
void set_usage_counter(intptr_t value) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
// TODO(Srdjan): Assert that this is thread-safe, i.e., only |
// set from mutator-thread or while at a safepoint (e.g., during marking). |
StoreNonPointer(&raw_ptr()->usage_counter_, value); |
+#endif |
} |
int8_t deoptimization_counter() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ return 0; |
+#else |
return raw_ptr()->deoptimization_counter_; |
+#endif |
} |
void set_deoptimization_counter(int8_t value) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
ASSERT(value >= 0); |
StoreNonPointer(&raw_ptr()->deoptimization_counter_, value); |
+#endif |
} |
static const intptr_t kMaxInstructionCount = (1 << 16) - 1; |
intptr_t optimized_instruction_count() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+ return 0; |
+#else |
return raw_ptr()->optimized_instruction_count_; |
+#endif |
} |
void set_optimized_instruction_count(intptr_t value) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
ASSERT(value >= 0); |
if (value > kMaxInstructionCount) { |
value = kMaxInstructionCount; |
} |
StoreNonPointer(&raw_ptr()->optimized_instruction_count_, |
static_cast<uint16_t>(value)); |
+#endif |
} |
intptr_t optimized_call_site_count() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ return 0; |
+#else |
return raw_ptr()->optimized_call_site_count_; |
+#endif |
} |
void set_optimized_call_site_count(intptr_t value) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
ASSERT(value >= 0); |
if (value > kMaxInstructionCount) { |
value = kMaxInstructionCount; |
} |
StoreNonPointer(&raw_ptr()->optimized_call_site_count_, |
static_cast<uint16_t>(value)); |
+#endif |
} |
bool IsOptimizable() const; |
@@ -2785,9 +2850,20 @@ class Function : public Object { |
// VM instantiation. It is independent from presence of type feedback |
// (ic_data_array) and code, which may be loaded from a snapshot. |
void set_was_compiled(bool value) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
StoreNonPointer(&raw_ptr()->was_compiled_, value ? 1 : 0); |
+#endif |
+ } |
+ bool was_compiled() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+ return true; |
+#else |
+ return raw_ptr()->was_compiled_ == 1; |
+#endif |
} |
- bool was_compiled() const { return raw_ptr()->was_compiled_ == 1; } |
// static: Considered during class-side or top-level resolution rather than |
// instance-side resolution. |
@@ -4504,7 +4580,12 @@ class DeoptInfo : public AllStatic { |
class Code : public Object { |
public: |
RawInstructions* active_instructions() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+ return NULL; |
+#else |
return raw_ptr()->active_instructions_; |
+#endif |
} |
RawInstructions* instructions() const { return raw_ptr()->instructions_; } |
@@ -4572,12 +4653,20 @@ class Code : public Object { |
} |
RawCodeSourceMap* code_source_map() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ return CodeSourceMap::null(); |
+#else |
return raw_ptr()->code_source_map_; |
+#endif |
} |
void set_code_source_map(const CodeSourceMap& code_source_map) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
ASSERT(code_source_map.IsOld()); |
StorePointer(&raw_ptr()->code_source_map_, code_source_map.raw()); |
+#endif |
} |
// Used during reloading (see object_reload.cc). Calls Reset on all ICDatas |
@@ -4588,7 +4677,12 @@ class Code : public Object { |
// Array of DeoptInfo objects. |
RawArray* deopt_info_array() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+ return NULL; |
+#else |
return raw_ptr()->deopt_info_array_; |
+#endif |
} |
void set_deopt_info_array(const Array& array) const; |
@@ -4608,7 +4702,12 @@ class Code : public Object { |
void set_static_calls_target_table(const Array& value) const; |
RawArray* static_calls_target_table() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+ return NULL; |
+#else |
return raw_ptr()->static_calls_target_table_; |
+#endif |
} |
RawTypedData* GetDeoptInfoAtPc(uword pc, |
@@ -4659,7 +4758,12 @@ class Code : public Object { |
void set_comments(const Comments& comments) const; |
RawObject* return_address_metadata() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+ return NULL; |
+#else |
return raw_ptr()->return_address_metadata_; |
+#endif |
} |
// Sets |return_address_metadata|. |
void SetPrologueOffset(intptr_t offset) const; |
@@ -4694,11 +4798,20 @@ class Code : public Object { |
void DumpInlinedIntervals() const; |
RawLocalVarDescriptors* var_descriptors() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+ return NULL; |
+#else |
return raw_ptr()->var_descriptors_; |
+#endif |
} |
void set_var_descriptors(const LocalVarDescriptors& value) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
ASSERT(value.IsOld()); |
StorePointer(&raw_ptr()->var_descriptors_, value.raw()); |
+#endif |
} |
// Will compute local var descriptors is necessary. |
@@ -4779,14 +4892,26 @@ class Code : public Object { |
RawString* QualifiedName() const; |
int64_t compile_timestamp() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ return 0; |
+#else |
return raw_ptr()->compile_timestamp_; |
+#endif |
} |
intptr_t lazy_deopt_pc_offset() const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
Florian Schneider
2016/09/15 17:17:37
Is this used in AOT? UNREACHABLE as well?
rmacnak
2016/09/16 21:59:02
From the profiler.
|
+ return 0; |
+#else |
return raw_ptr()->lazy_deopt_pc_offset_; |
+#endif |
} |
void set_lazy_deopt_pc_offset(intptr_t pc) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
StoreNonPointer(&raw_ptr()->lazy_deopt_pc_offset_, pc); |
+#endif |
} |
bool IsAllocationStubCode() const; |
@@ -4850,7 +4975,11 @@ class Code : public Object { |
static const intptr_t kEntrySize = sizeof(int32_t); // NOLINT |
void set_compile_timestamp(int64_t timestamp) const { |
+#if defined(DART_PRECOMPILED_RUNTIME) |
+ UNREACHABLE(); |
+#else |
StoreNonPointer(&raw_ptr()->compile_timestamp_, timestamp); |
+#endif |
} |
void SetActiveInstructions(RawInstructions* instructions) const; |
@@ -5080,6 +5209,7 @@ class MegamorphicCache : public Object { |
private: |
friend class Class; |
friend class MegamorphicCacheTable; |
+ friend class Precompiler; |
static RawMegamorphicCache* New(); |