| OLD | NEW |
| 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/compiler.h" | 5 #include "vm/compiler.h" |
| 6 | 6 |
| 7 #include "vm/assembler.h" | 7 #include "vm/assembler.h" |
| 8 | 8 |
| 9 #include "vm/ast_printer.h" | 9 #include "vm/ast_printer.h" |
| 10 #include "vm/block_scheduler.h" | 10 #include "vm/block_scheduler.h" |
| (...skipping 1547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1558 #ifdef DART_PRECOMPILER | 1558 #ifdef DART_PRECOMPILER |
| 1559 if (FLAG_precompiled_mode) { | 1559 if (FLAG_precompiled_mode) { |
| 1560 return Precompiler::EvaluateStaticInitializer(field); | 1560 return Precompiler::EvaluateStaticInitializer(field); |
| 1561 } | 1561 } |
| 1562 #endif | 1562 #endif |
| 1563 ASSERT(field.is_static()); | 1563 ASSERT(field.is_static()); |
| 1564 // The VM sets the field's value to transiton_sentinel prior to | 1564 // The VM sets the field's value to transiton_sentinel prior to |
| 1565 // evaluating the initializer value. | 1565 // evaluating the initializer value. |
| 1566 ASSERT(field.StaticValue() == Object::transition_sentinel().raw()); | 1566 ASSERT(field.StaticValue() == Object::transition_sentinel().raw()); |
| 1567 LongJumpScope jump; | 1567 LongJumpScope jump; |
| 1568 Thread* thread = Thread::Current(); | |
| 1569 if (setjmp(*jump.Set()) == 0) { | 1568 if (setjmp(*jump.Set()) == 0) { |
| 1569 Thread* const thread = Thread::Current(); |
| 1570 NoOOBMessageScope no_msg_scope(thread); | 1570 NoOOBMessageScope no_msg_scope(thread); |
| 1571 NoReloadScope no_reload_scope(thread->isolate(), thread); | 1571 NoReloadScope no_reload_scope(thread->isolate(), thread); |
| 1572 // Under lazy compilation initializer has not yet been created, so create | 1572 // Under lazy compilation initializer has not yet been created, so create |
| 1573 // it now, but don't bother remembering it because it won't be used again. | 1573 // it now, but don't bother remembering it because it won't be used again. |
| 1574 ASSERT(!field.HasPrecompiledInitializer()); | 1574 ASSERT(!field.HasPrecompiledInitializer()); |
| 1575 Thread* const thread = Thread::Current(); | |
| 1576 Function& initializer = Function::Handle(thread->zone()); | 1575 Function& initializer = Function::Handle(thread->zone()); |
| 1577 { | 1576 { |
| 1578 NOT_IN_PRODUCT( | 1577 NOT_IN_PRODUCT( |
| 1579 VMTagScope tagScope(thread, VMTag::kCompileUnoptimizedTagId); | 1578 VMTagScope tagScope(thread, VMTag::kCompileUnoptimizedTagId); |
| 1580 TimelineDurationScope tds(thread, Timeline::GetCompilerStream(), | 1579 TimelineDurationScope tds(thread, Timeline::GetCompilerStream(), |
| 1581 "CompileStaticInitializer"); | 1580 "CompileStaticInitializer"); |
| 1582 if (tds.enabled()) { | 1581 if (tds.enabled()) { |
| 1583 tds.SetNumArguments(1); | 1582 tds.SetNumArguments(1); |
| 1584 tds.CopyArgument(0, "field", field.ToCString()); | 1583 tds.CopyArgument(0, "field", field.ToCString()); |
| 1585 } | 1584 } |
| (...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2182 | 2181 |
| 2183 | 2182 |
| 2184 bool BackgroundCompiler::IsDisabled() { | 2183 bool BackgroundCompiler::IsDisabled() { |
| 2185 UNREACHABLE(); | 2184 UNREACHABLE(); |
| 2186 return true; | 2185 return true; |
| 2187 } | 2186 } |
| 2188 | 2187 |
| 2189 #endif // DART_PRECOMPILED_RUNTIME | 2188 #endif // DART_PRECOMPILED_RUNTIME |
| 2190 | 2189 |
| 2191 } // namespace dart | 2190 } // namespace dart |
| OLD | NEW |