| Index: vm/parser.cc
|
| ===================================================================
|
| --- vm/parser.cc (revision 16415)
|
| +++ vm/parser.cc (working copy)
|
| @@ -848,8 +848,7 @@
|
| TokenPos(),
|
| Token::kEQ_STRICT,
|
| new LoadStaticFieldNode(TokenPos(), field),
|
| - new LiteralNode(TokenPos(),
|
| - Instance::ZoneHandle(Object::transition_sentinel())));
|
| + new LiteralNode(TokenPos(), Object::transition_sentinel()));
|
| // Set field to null prior to throwing exception, so that subsequent
|
| // accesses to the field do not throw again, since initializers should only
|
| // be executed once.
|
| @@ -875,16 +874,14 @@
|
| TokenPos(),
|
| Token::kEQ_STRICT,
|
| new LoadStaticFieldNode(TokenPos(), field),
|
| - new LiteralNode(TokenPos(),
|
| - Instance::ZoneHandle(Object::sentinel())));
|
| + new LiteralNode(TokenPos(), Object::sentinel()));
|
| SequenceNode* initialize_field = new SequenceNode(TokenPos(), NULL);
|
| initialize_field->Add(
|
| new StoreStaticFieldNode(
|
| TokenPos(),
|
| field,
|
| new LiteralNode(
|
| - TokenPos(),
|
| - Instance::ZoneHandle(Object::transition_sentinel()))));
|
| + TokenPos(), Object::transition_sentinel())));
|
| // TODO(hausner): If evaluation of the field value throws an exception,
|
| // we leave the field value as 'transition_sentinel', which is wrong.
|
| // A second reference to the field later throws a circular dependency
|
| @@ -2717,7 +2714,7 @@
|
| bool has_simple_literal = false;
|
| if (has_initializer) {
|
| ConsumeToken();
|
| - init_value = Object::sentinel();
|
| + init_value = Object::sentinel().raw();
|
| // For static const fields, the initialization expression
|
| // will be parsed through the kConstImplicitGetter method
|
| // invocation/compilation.
|
| @@ -3105,7 +3102,7 @@
|
| } else {
|
| // Not patching a class, but it has been found. This must be one of the
|
| // pre-registered classes from object.cc or a duplicate definition.
|
| - if (cls.functions() != Object::empty_array()) {
|
| + if (cls.functions() != Object::empty_array().raw()) {
|
| ErrorMsg(classname_pos, "class '%s' is already defined",
|
| class_name.ToCString());
|
| }
|
| @@ -3114,7 +3111,7 @@
|
| }
|
| }
|
| ASSERT(!cls.IsNull());
|
| - ASSERT(cls.functions() == Object::empty_array());
|
| + ASSERT(cls.functions() == Object::empty_array().raw());
|
| set_current_class(cls);
|
| ParseTypeParameters(cls);
|
| Type& super_type = Type::Handle();
|
| @@ -3691,7 +3688,7 @@
|
| library_.AddObject(field, var_name);
|
| if (CurrentToken() == Token::kASSIGN) {
|
| ConsumeToken();
|
| - Instance& field_value = Instance::Handle(Object::sentinel());
|
| + Instance& field_value = Instance::Handle(Object::sentinel().raw());
|
| bool has_simple_literal = false;
|
| if (is_final && (LookaheadToken(1) == Token::kSEMICOLON)) {
|
| has_simple_literal = IsSimpleLiteral(type, &field_value);
|
| @@ -7208,8 +7205,8 @@
|
| }
|
| // The field is initialized.
|
| if (field.is_const()) {
|
| - ASSERT(field.value() != Object::sentinel());
|
| - ASSERT(field.value() != Object::transition_sentinel());
|
| + ASSERT(field.value() != Object::sentinel().raw());
|
| + ASSERT(field.value() != Object::transition_sentinel().raw());
|
| return new LiteralNode(ident_pos, Instance::ZoneHandle(field.value()));
|
| }
|
| // Access the field directly.
|
| @@ -7822,7 +7819,7 @@
|
| AstNode* Parser::RunStaticFieldInitializer(const Field& field) {
|
| ASSERT(field.is_static());
|
| const Instance& value = Instance::Handle(field.value());
|
| - if (value.raw() == Object::transition_sentinel()) {
|
| + if (value.raw() == Object::transition_sentinel().raw()) {
|
| if (field.is_const()) {
|
| ErrorMsg("circular dependency while initializing static field '%s'",
|
| String::Handle(field.name()).ToCString());
|
| @@ -7834,12 +7831,12 @@
|
| Class::ZoneHandle(field.owner()),
|
| String::ZoneHandle(field.name()));
|
| }
|
| - } else if (value.raw() == Object::sentinel()) {
|
| + } else if (value.raw() == Object::sentinel().raw()) {
|
| // This field has not been referenced yet and thus the value has
|
| // 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(Instance::Handle(Object::transition_sentinel()));
|
| + field.set_value(Object::transition_sentinel());
|
| const String& field_name = String::Handle(field.name());
|
| const String& getter_name =
|
| String::Handle(Field::GetterName(field_name));
|
| @@ -7854,8 +7851,8 @@
|
| Resolver::kIsQualified));
|
| ASSERT(!func.IsNull());
|
| ASSERT(func.kind() == RawFunction::kConstImplicitGetter);
|
| - const Array& args = Array::Handle(Object::empty_array());
|
| - Object& const_value = Object::Handle(DartEntry::InvokeStatic(func, args));
|
| + Object& const_value = Object::Handle(
|
| + DartEntry::InvokeStatic(func, Object::empty_array()));
|
| if (const_value.IsError()) {
|
| const Error& error = Error::Cast(const_value);
|
| if (error.IsUnhandledException()) {
|
|
|