Index: runtime/vm/parser.cc |
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc |
index 5e341f0f7e41c8c5e8eba141cecd8972beff2c09..12b7954b14b15afec6bc74eaeb08846d5ce5b6f1 100644 |
--- a/runtime/vm/parser.cc |
+++ b/runtime/vm/parser.cc |
@@ -4061,7 +4061,7 @@ void Parser::ParseFieldDefinition(ClassDesc* members, MemberDesc* field) { |
// For static final fields (this includes static const fields), set value to |
// "uninitialized" and create a kImplicitStaticFinalGetter getter method. |
if (field->has_static && has_initializer) { |
- class_field.set_value(init_value); |
+ class_field.SetStaticValue(init_value, true); |
if (!has_simple_literal) { |
String& getter_name = |
String::Handle(Z, Field::GetterSymbol(*field->name)); |
@@ -4800,7 +4800,7 @@ void Parser::ParseEnumDefinition(const Class& cls) { |
// Initialize the field with the ordinal value. It will be patched |
// later with the enum constant instance. |
const Smi& ordinal_value = Smi::Handle(Z, Smi::New(i)); |
- enum_value.set_value(ordinal_value); |
+ enum_value.SetStaticValue(ordinal_value, true); |
enum_value.RecordStore(ordinal_value); |
i++; |
@@ -4838,7 +4838,7 @@ void Parser::ParseEnumDefinition(const Class& cls) { |
// Allocate the immutable array containing the enumeration values. |
// The actual enum instance values will be patched in later. |
const Array& values_array = Array::Handle(Z, Array::New(i, Heap::kOld)); |
- values_field.set_value(values_array); |
+ values_field.SetStaticValue(values_array, true); |
values_field.RecordStore(values_array); |
// Create a static field that contains the list of enumeration names. |
@@ -4849,7 +4849,7 @@ void Parser::ParseEnumDefinition(const Class& cls) { |
names_field = names_field.Clone(cls); |
enum_members.AddField(names_field); |
const Array& names_array = Array::Handle(Array::MakeArray(enum_names)); |
- names_field.set_value(names_array); |
+ names_field.SetStaticValue(names_array, true); |
names_field.RecordStore(names_array); |
// Clone the toString() function from the helper class. |
@@ -5442,7 +5442,7 @@ void Parser::ParseTopLevelVariable(TopLevel* top_level, |
field = Field::New(var_name, is_static, is_final, is_const, is_reflectable, |
current_class(), name_pos); |
field.set_type(type); |
- field.set_value(Object::null_instance()); |
+ field.SetStaticValue(Object::null_instance(), true); |
top_level->AddField(field); |
library_.AddObject(field, var_name); |
if (metadata_pos >= 0) { |
@@ -5456,7 +5456,7 @@ void Parser::ParseTopLevelVariable(TopLevel* top_level, |
has_simple_literal = IsSimpleLiteral(type, &field_value); |
} |
SkipExpr(); |
- field.set_value(field_value); |
+ field.SetStaticValue(field_value, true); |
field.set_has_initializer(true); |
if (!has_simple_literal) { |
@@ -10800,10 +10800,11 @@ static AstNode* LiteralIfStaticConst(Zone* zone, AstNode* expr) { |
const Field& field = expr->AsLoadStaticFieldNode()->field(); |
if (field.is_const() && |
!expr->AsLoadStaticFieldNode()->is_deferred_reference()) { |
- ASSERT(field.value() != Object::sentinel().raw()); |
- ASSERT(field.value() != Object::transition_sentinel().raw()); |
- return new(zone) LiteralNode(expr->token_pos(), |
- Instance::ZoneHandle(zone, field.value())); |
+ ASSERT(field.StaticValue() != Object::sentinel().raw()); |
+ ASSERT(field.StaticValue() != Object::transition_sentinel().raw()); |
+ return new(zone) LiteralNode( |
+ expr->token_pos(), |
+ Instance::ZoneHandle(zone, field.StaticValue())); |
} |
} |
return expr; |
@@ -11982,7 +11983,7 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(const Field& field, |
String::Handle(Z, Field::GetterSymbol(field_name)); |
const Function& getter = Function::Handle(Z, |
field_owner.LookupStaticFunction(getter_name)); |
- const Instance& value = Instance::Handle(Z, field.value()); |
+ const Instance& value = Instance::Handle(Z, field.StaticValue()); |
if (value.raw() == Object::transition_sentinel().raw()) { |
if (field.is_const()) { |
ReportError("circular dependency while initializing static field '%s'", |
@@ -11997,7 +11998,7 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(const Field& field, |
// not been evaluated. If the field is const, call the static getter method |
// to evaluate the expression and canonicalize the value. |
if (field.is_const()) { |
- field.set_value(Object::transition_sentinel()); |
+ field.SetStaticValue(Object::transition_sentinel()); |
const int kNumArguments = 0; // no arguments. |
const Function& func = Function::Handle(Z, |
Resolver::ResolveStatic(field_owner, |
@@ -12018,7 +12019,7 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(const Field& field, |
// generated AST is not deterministic. Therefore mark the function as |
// not optimizable. |
current_function().SetIsOptimizable(false); |
- field.set_value(Object::null_instance()); |
+ field.SetStaticValue(Object::null_instance()); |
// It is a compile-time error if evaluation of a compile-time constant |
// would raise an exception. |
const String& field_name = String::Handle(Z, field.name()); |
@@ -12035,7 +12036,7 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(const Field& field, |
Instance& instance = Instance::Handle(Z); |
instance ^= const_value.raw(); |
instance = TryCanonicalize(instance, field_ref_pos); |
- field.set_value(instance); |
+ field.SetStaticValue(instance); |
return NULL; // Constant |
} else { |
return new(Z) StaticGetterNode( |
@@ -13897,9 +13898,9 @@ const Instance& Parser::EvaluateConstExpr(intptr_t expr_pos, AstNode* expr) { |
// We already checked that this field is const and has been |
// initialized. |
ASSERT(field.is_const()); |
- ASSERT(field.value() != Object::sentinel().raw()); |
- ASSERT(field.value() != Object::transition_sentinel().raw()); |
- return Instance::ZoneHandle(Z, field.value()); |
+ ASSERT(field.StaticValue() != Object::sentinel().raw()); |
+ ASSERT(field.StaticValue() != Object::transition_sentinel().raw()); |
+ return Instance::ZoneHandle(Z, field.StaticValue()); |
} else { |
ASSERT(expr->EvalConstExpr() != NULL); |
ReturnNode* ret = new(Z) ReturnNode(expr->token_pos(), expr); |