| Index: runtime/vm/parser.cc
|
| ===================================================================
|
| --- runtime/vm/parser.cc (revision 9315)
|
| +++ runtime/vm/parser.cc (working copy)
|
| @@ -102,8 +102,7 @@
|
|
|
|
|
| static ThrowNode* GenerateRethrow(intptr_t token_pos, const Object& obj) {
|
| - UnhandledException& excp = UnhandledException::Handle();
|
| - excp ^= obj.raw();
|
| + const UnhandledException& excp = UnhandledException::Cast(obj);
|
| const Instance& exception = Instance::ZoneHandle(excp.exception());
|
| const Instance& stack_trace = Instance::ZoneHandle(excp.stacktrace());
|
| return new ThrowNode(token_pos,
|
| @@ -6077,13 +6076,11 @@
|
| if ((lhs_literal != NULL) && (rhs_literal != NULL)) {
|
| if (lhs_literal->literal().IsDouble() &&
|
| rhs_literal->literal().IsDouble()) {
|
| - Double& dbl_obj = Double::ZoneHandle();
|
| - dbl_obj ^= lhs_literal->literal().raw();
|
| - double left_double = dbl_obj.value();
|
| - dbl_obj ^= rhs_literal->literal().raw();
|
| - double right_double = dbl_obj.value();
|
| + double left_double = Double::Cast(lhs_literal->literal()).value();
|
| + double right_double = Double::Cast(rhs_literal->literal()).value();
|
| if (binary_op == Token::kDIV) {
|
| - dbl_obj = Double::NewCanonical((left_double / right_double));
|
| + const Double& dbl_obj = Double::ZoneHandle(
|
| + Double::NewCanonical((left_double / right_double)));
|
| return new LiteralNode(op_pos, dbl_obj);
|
| }
|
| }
|
| @@ -6868,9 +6865,8 @@
|
| Type& parameterized_type = Type::Handle();
|
| parameterized_type ^= type->raw();
|
| if (!resolved_type_class.IsNull()) {
|
| - Object& type_class = Object::Handle(resolved_type_class.raw());
|
| // Replace unresolved class with resolved type class.
|
| - parameterized_type.set_type_class(type_class);
|
| + parameterized_type.set_type_class(resolved_type_class);
|
| } else if (finalization >= ClassFinalizer::kFinalize) {
|
| // The type is malformed.
|
| ClassFinalizer::FinalizeMalformedType(
|
| @@ -6995,9 +6991,8 @@
|
| Object& const_value = Object::Handle(
|
| DartEntry::InvokeStatic(func, arguments, kNoArgumentNames));
|
| if (const_value.IsError()) {
|
| - Error& error = Error::Handle();
|
| - error ^= const_value.raw();
|
| - if (const_value.IsUnhandledException()) {
|
| + const Error& error = Error::Cast(const_value);
|
| + if (error.IsUnhandledException()) {
|
| field.set_value(Instance::Handle());
|
| // It is a compile-time error if evaluation of a compile-time constant
|
| // would raise an exception.
|
| @@ -7062,9 +7057,7 @@
|
| if (result.IsUnhandledException()) {
|
| return result.raw();
|
| } else {
|
| - Error& error = Error::Handle();
|
| - error ^= result.raw();
|
| - Isolate::Current()->long_jump_base()->Jump(1, error);
|
| + Isolate::Current()->long_jump_base()->Jump(1, Error::Cast(result));
|
| UNREACHABLE();
|
| return Object::null();
|
| }
|
| @@ -7198,19 +7191,16 @@
|
| obj = lib.LookupObject(*qual_ident.ident);
|
| }
|
| if (obj.IsClass()) {
|
| - Class& cls = Class::Handle();
|
| - cls ^= obj.raw();
|
| + const Class& cls = Class::Cast(obj);
|
| return new PrimaryNode(qual_ident.ident_pos, Class::ZoneHandle(cls.raw()));
|
| }
|
| if (obj.IsField()) {
|
| - Field& field = Field::Handle();
|
| - field ^= obj.raw();
|
| + const Field& field = Field::Cast(obj);
|
| ASSERT(field.is_static());
|
| return GenerateStaticFieldLookup(field, qual_ident.ident_pos);
|
| }
|
| - Function& func = Function::Handle();
|
| if (obj.IsFunction()) {
|
| - func ^= obj.raw();
|
| + const Function& func = Function::Cast(obj);
|
| ASSERT(func.is_static());
|
| return new PrimaryNode(qual_ident.ident_pos,
|
| Function::ZoneHandle(func.raw()));
|
| @@ -7239,7 +7229,7 @@
|
| }
|
| if (!obj.IsNull()) {
|
| ASSERT(obj.IsFunction());
|
| - func ^= obj.raw();
|
| + const Function& func = Function::Cast(obj);
|
| ASSERT(func.is_static());
|
| ASSERT(AbstractType::Handle(func.result_type()).IsResolved());
|
| return new StaticGetterNode(qual_ident.ident_pos,
|
| @@ -7766,9 +7756,9 @@
|
| if (constructor_result.IsUnhandledException()) {
|
| return GenerateRethrow(literal_pos, constructor_result);
|
| } else {
|
| - Instance& const_instance = Instance::ZoneHandle();
|
| - const_instance ^= constructor_result.raw();
|
| - return new LiteralNode(literal_pos, const_instance);
|
| + const Instance& const_instance = Instance::Cast(constructor_result);
|
| + return new LiteralNode(literal_pos,
|
| + Instance::ZoneHandle(const_instance.raw()));
|
| }
|
| } else {
|
| // Factory call at runtime.
|
| @@ -8044,9 +8034,9 @@
|
| if (constructor_result.IsUnhandledException()) {
|
| new_object = GenerateRethrow(new_pos, constructor_result);
|
| } else {
|
| - Instance& const_instance = Instance::ZoneHandle();
|
| - const_instance ^= constructor_result.raw();
|
| - new_object = new LiteralNode(new_pos, const_instance);
|
| + const Instance& const_instance = Instance::Cast(constructor_result);
|
| + new_object = new LiteralNode(new_pos,
|
| + Instance::ZoneHandle(const_instance.raw()));
|
| }
|
| } else {
|
| CheckFunctionIsCallable(new_pos, constructor);
|
| @@ -8098,7 +8088,6 @@
|
| interpolate_arg,
|
| kNoArgumentNames);
|
| if (concatenated.IsUnhandledException()) {
|
| - // TODO(regis): Report
|
| ErrorMsg("Exception thrown in Parser::Interpolate");
|
| }
|
| concatenated = String::NewSymbol(concatenated);
|
| @@ -8373,15 +8362,13 @@
|
| Object& result = Object::Handle(Compiler::ExecuteOnce(seq));
|
| if (result.IsError()) {
|
| // Propagate the compilation error.
|
| - Error& error = Error::Handle();
|
| - error ^= result.raw();
|
| - Isolate::Current()->long_jump_base()->Jump(1, error);
|
| + Isolate::Current()->long_jump_base()->Jump(1, Error::Cast(result));
|
| UNREACHABLE();
|
| }
|
| ASSERT(result.IsInstance());
|
| Instance& value = Instance::ZoneHandle();
|
| value ^= result.raw();
|
| - if (value.IsNull()) {
|
| + if (!value.IsNull()) {
|
| value ^= value.Canonicalize();
|
| }
|
| return value;
|
|
|