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

Side by Side Diff: runtime/vm/object.cc

Issue 1663163003: Initial split of precompilation code from compiler.cc (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/object.h" 5 #include "vm/object.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/cpu.h" 10 #include "vm/cpu.h"
(...skipping 11 matching lines...) Expand all
22 #include "vm/deopt_instructions.h" 22 #include "vm/deopt_instructions.h"
23 #include "vm/disassembler.h" 23 #include "vm/disassembler.h"
24 #include "vm/double_conversion.h" 24 #include "vm/double_conversion.h"
25 #include "vm/exceptions.h" 25 #include "vm/exceptions.h"
26 #include "vm/growable_array.h" 26 #include "vm/growable_array.h"
27 #include "vm/hash_table.h" 27 #include "vm/hash_table.h"
28 #include "vm/heap.h" 28 #include "vm/heap.h"
29 #include "vm/intrinsifier.h" 29 #include "vm/intrinsifier.h"
30 #include "vm/object_store.h" 30 #include "vm/object_store.h"
31 #include "vm/parser.h" 31 #include "vm/parser.h"
32 #include "vm/precompiler.h"
32 #include "vm/profiler.h" 33 #include "vm/profiler.h"
33 #include "vm/report.h" 34 #include "vm/report.h"
34 #include "vm/reusable_handles.h" 35 #include "vm/reusable_handles.h"
35 #include "vm/runtime_entry.h" 36 #include "vm/runtime_entry.h"
36 #include "vm/scopes.h" 37 #include "vm/scopes.h"
37 #include "vm/stack_frame.h" 38 #include "vm/stack_frame.h"
38 #include "vm/symbols.h" 39 #include "vm/symbols.h"
39 #include "vm/tags.h" 40 #include "vm/tags.h"
40 #include "vm/thread_registry.h" 41 #include "vm/thread_registry.h"
41 #include "vm/timer.h" 42 #include "vm/timer.h"
(...skipping 5082 matching lines...) Expand 10 before | Expand all | Expand 10 after
5124 5125
5125 5126
5126 bool Function::HasBreakpoint() const { 5127 bool Function::HasBreakpoint() const {
5127 Thread* thread = Thread::Current(); 5128 Thread* thread = Thread::Current();
5128 return thread->isolate()->debugger()->HasBreakpoint(*this, thread->zone()); 5129 return thread->isolate()->debugger()->HasBreakpoint(*this, thread->zone());
5129 } 5130 }
5130 5131
5131 5132
5132 void Function::InstallOptimizedCode(const Code& code, bool is_osr) const { 5133 void Function::InstallOptimizedCode(const Code& code, bool is_osr) const {
5133 DEBUG_ASSERT(IsMutatorOrAtSafepoint()); 5134 DEBUG_ASSERT(IsMutatorOrAtSafepoint());
5134 // We may not have previous code if 'always_optimize' is set. 5135 // We may not have previous code if FLAG_precompile is set.
5135 if (!is_osr && HasCode()) { 5136 if (!is_osr && HasCode()) {
5136 Code::Handle(CurrentCode()).DisableDartCode(); 5137 Code::Handle(CurrentCode()).DisableDartCode();
5137 } 5138 }
5138 AttachCode(code); 5139 AttachCode(code);
5139 } 5140 }
5140 5141
5141 5142
5142 void Function::SetInstructions(const Code& value) const { 5143 void Function::SetInstructions(const Code& value) const {
5143 DEBUG_ASSERT(IsMutatorOrAtSafepoint()); 5144 DEBUG_ASSERT(IsMutatorOrAtSafepoint());
5144 SetInstructionsSafe(value); 5145 SetInstructionsSafe(value);
(...skipping 2552 matching lines...) Expand 10 before | Expand all | Expand 10 after
7697 void Field::SetSavedInitialStaticValue(const Instance& value) const { 7698 void Field::SetSavedInitialStaticValue(const Instance& value) const {
7698 ASSERT(!HasPrecompiledInitializer()); 7699 ASSERT(!HasPrecompiledInitializer());
7699 StorePointer(&raw_ptr()->initializer_.saved_value_, value.raw()); 7700 StorePointer(&raw_ptr()->initializer_.saved_value_, value.raw());
7700 } 7701 }
7701 7702
7702 7703
7703 void Field::EvaluateInitializer() const { 7704 void Field::EvaluateInitializer() const {
7704 ASSERT(is_static()); 7705 ASSERT(is_static());
7705 if (StaticValue() == Object::sentinel().raw()) { 7706 if (StaticValue() == Object::sentinel().raw()) {
7706 SetStaticValue(Object::transition_sentinel()); 7707 SetStaticValue(Object::transition_sentinel());
7707 Object& value = Object::Handle(Compiler::EvaluateStaticInitializer(*this)); 7708 const Object& value =
7709 Object::Handle(Compiler::EvaluateStaticInitializer(*this));
7708 if (value.IsError()) { 7710 if (value.IsError()) {
7709 SetStaticValue(Object::null_instance()); 7711 SetStaticValue(Object::null_instance());
7710 Exceptions::PropagateError(Error::Cast(value)); 7712 Exceptions::PropagateError(Error::Cast(value));
7711 UNREACHABLE(); 7713 UNREACHABLE();
7712 } 7714 }
7713 ASSERT(value.IsNull() || value.IsInstance()); 7715 ASSERT(value.IsNull() || value.IsInstance());
7714 SetStaticValue(value.IsNull() ? Instance::null_instance() 7716 SetStaticValue(value.IsNull() ? Instance::null_instance()
7715 : Instance::Cast(value)); 7717 : Instance::Cast(value));
7716 return; 7718 return;
7717 } else if (StaticValue() == Object::transition_sentinel().raw()) { 7719 } else if (StaticValue() == Object::transition_sentinel().raw()) {
(...skipping 15147 matching lines...) Expand 10 before | Expand all | Expand 10 after
22865 return tag_label.ToCString(); 22867 return tag_label.ToCString();
22866 } 22868 }
22867 22869
22868 22870
22869 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { 22871 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const {
22870 Instance::PrintJSONImpl(stream, ref); 22872 Instance::PrintJSONImpl(stream, ref);
22871 } 22873 }
22872 22874
22873 22875
22874 } // namespace dart 22876 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698