| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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/intermediate_language.h" | 5 #include "vm/intermediate_language.h" |
| 6 | 6 |
| 7 #include "vm/bit_vector.h" | 7 #include "vm/bit_vector.h" |
| 8 #include "vm/bootstrap.h" | 8 #include "vm/bootstrap.h" |
| 9 #include "vm/compiler.h" | 9 #include "vm/compiler.h" |
| 10 #include "vm/constant_propagator.h" | 10 #include "vm/constant_propagator.h" |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 (field_.StaticValue() != Object::transition_sentinel().raw()); | 391 (field_.StaticValue() != Object::transition_sentinel().raw()); |
| 392 // When precompiling, the fact that a field is currently initialized does not | 392 // When precompiling, the fact that a field is currently initialized does not |
| 393 // make it safe to omit code that checks if the field needs initialization | 393 // make it safe to omit code that checks if the field needs initialization |
| 394 // because the field will be reset so it starts uninitialized in the process | 394 // because the field will be reset so it starts uninitialized in the process |
| 395 // running the precompiled code. We must be prepared to reinitialize fields. | 395 // running the precompiled code. We must be prepared to reinitialize fields. |
| 396 return is_initialized && !FLAG_fields_may_be_reset ? NULL : this; | 396 return is_initialized && !FLAG_fields_may_be_reset ? NULL : this; |
| 397 } | 397 } |
| 398 | 398 |
| 399 | 399 |
| 400 EffectSet LoadStaticFieldInstr::Dependencies() const { | 400 EffectSet LoadStaticFieldInstr::Dependencies() const { |
| 401 return StaticField().is_final() ? EffectSet::None() : EffectSet::All(); | 401 return (StaticField().is_final() && !FLAG_fields_may_be_reset) |
| 402 ? EffectSet::None() : EffectSet::All(); |
| 402 } | 403 } |
| 403 | 404 |
| 404 | 405 |
| 405 bool LoadStaticFieldInstr::AttributesEqual(Instruction* other) const { | 406 bool LoadStaticFieldInstr::AttributesEqual(Instruction* other) const { |
| 406 LoadStaticFieldInstr* other_load = other->AsLoadStaticField(); | 407 LoadStaticFieldInstr* other_load = other->AsLoadStaticField(); |
| 407 ASSERT(other_load != NULL); | 408 ASSERT(other_load != NULL); |
| 408 // Assert that the field is initialized. | 409 // Assert that the field is initialized. |
| 409 ASSERT(StaticField().StaticValue() != Object::sentinel().raw()); | 410 ASSERT(StaticField().StaticValue() != Object::sentinel().raw()); |
| 410 ASSERT(StaticField().StaticValue() != Object::transition_sentinel().raw()); | 411 ASSERT(StaticField().StaticValue() != Object::transition_sentinel().raw()); |
| 411 return StaticField().raw() == other_load->StaticField().raw(); | 412 return StaticField().raw() == other_load->StaticField().raw(); |
| (...skipping 3265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3677 set_native_c_function(native_function); | 3678 set_native_c_function(native_function); |
| 3678 function().SetIsNativeAutoSetupScope(auto_setup_scope); | 3679 function().SetIsNativeAutoSetupScope(auto_setup_scope); |
| 3679 Dart_NativeEntryResolver resolver = library.native_entry_resolver(); | 3680 Dart_NativeEntryResolver resolver = library.native_entry_resolver(); |
| 3680 bool is_bootstrap_native = Bootstrap::IsBootstapResolver(resolver); | 3681 bool is_bootstrap_native = Bootstrap::IsBootstapResolver(resolver); |
| 3681 set_is_bootstrap_native(is_bootstrap_native); | 3682 set_is_bootstrap_native(is_bootstrap_native); |
| 3682 } | 3683 } |
| 3683 | 3684 |
| 3684 #undef __ | 3685 #undef __ |
| 3685 | 3686 |
| 3686 } // namespace dart | 3687 } // namespace dart |
| OLD | NEW |