| Index: runtime/vm/object.h
|
| diff --git a/runtime/vm/object.h b/runtime/vm/object.h
|
| index b502dfcd3558f8c4d33e5a19a39bdbc8c12f8267..38d9d9174ae77a6def7b2fc008684d4dbb376ac1 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)
|
| + 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;
|
| @@ -5069,6 +5198,10 @@ class MegamorphicCache : public Object {
|
| static RawMegamorphicCache* New(const String& target_name,
|
| const Array& arguments_descriptor);
|
|
|
| +#if defined(DART_PRECOMPILER)
|
| + static void ShareEmptyBuckets();
|
| +#endif
|
| +
|
| void EnsureCapacity() const;
|
|
|
| void Insert(const Smi& class_id, const Function& target) const;
|
|
|