Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(465)

Unified Diff: runtime/vm/parser.cc

Issue 868913002: Add Zone-based handle allocation interface and reduce use of Isolate-based interfaces. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/parser.h ('k') | runtime/vm/parser_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/parser.cc
===================================================================
--- runtime/vm/parser.cc (revision 43075)
+++ runtime/vm/parser.cc (working copy)
@@ -62,8 +62,9 @@
"Enable checked mode.");
-// Quick access to the locally defined isolate() method.
-#define I (isolate())
+// Quick access to the current isolate and zone.
+#define I (thread()->isolate())
+#define Z (zone())
#if defined(DEBUG)
@@ -132,7 +133,7 @@
LocalVariable* ParsedFunction::EnsureExpressionTemp() {
if (!has_expression_temp_var()) {
LocalVariable* temp =
- new (I) LocalVariable(function_.token_pos(),
+ new (Z) LocalVariable(function_.token_pos(),
Symbols::ExprTemp(),
Type::ZoneHandle(Type::DynamicType()));
ASSERT(temp != NULL);
@@ -145,10 +146,10 @@
void ParsedFunction::EnsureFinallyReturnTemp() {
if (!has_finally_return_temp_var()) {
- LocalVariable* temp = new(I) LocalVariable(
+ LocalVariable* temp = new(Z) LocalVariable(
function_.token_pos(),
- String::ZoneHandle(I, Symbols::New(":finally_ret_val")),
- Type::ZoneHandle(I, Type::DynamicType()));
+ String::ZoneHandle(Z, Symbols::New(":finally_ret_val")),
+ Type::ZoneHandle(Z, Type::DynamicType()));
ASSERT(temp != NULL);
temp->set_is_final();
set_finally_return_temp_var(temp);
@@ -180,7 +181,7 @@
return;
}
}
- deferred_prefixes_->Add(&LibraryPrefix::ZoneHandle(I, prefix.raw()));
+ deferred_prefixes_->Add(&LibraryPrefix::ZoneHandle(Z, prefix.raw()));
}
@@ -308,9 +309,9 @@
// For parsing a compilation unit.
Parser::Parser(const Script& script, const Library& library, intptr_t token_pos)
- : isolate_(Isolate::Current()),
- script_(Script::Handle(isolate_, script.raw())),
- tokens_iterator_(TokenStream::Handle(isolate_, script.tokens()),
+ : thread_(Thread::Current()),
+ script_(Script::Handle(zone(), script.raw())),
+ tokens_iterator_(TokenStream::Handle(zone(), script.tokens()),
token_pos),
token_kind_(Token::kILLEGAL),
current_block_(NULL),
@@ -319,10 +320,10 @@
current_member_(NULL),
allow_function_literals_(true),
parsed_function_(NULL),
- innermost_function_(Function::Handle(isolate_)),
- literal_token_(LiteralToken::Handle(isolate_)),
- current_class_(Class::Handle(isolate_)),
- library_(Library::Handle(isolate_, library.raw())),
+ innermost_function_(Function::Handle(zone())),
+ literal_token_(LiteralToken::Handle(zone())),
+ current_class_(Class::Handle(zone())),
+ library_(Library::Handle(zone(), library.raw())),
try_blocks_list_(NULL),
last_used_try_index_(0),
unregister_pending_function_(false),
@@ -336,9 +337,9 @@
Parser::Parser(const Script& script,
ParsedFunction* parsed_function,
intptr_t token_position)
- : isolate_(Isolate::Current()),
- script_(Script::Handle(isolate_, script.raw())),
- tokens_iterator_(TokenStream::Handle(isolate_, script.tokens()),
+ : thread_(Thread::Current()),
+ script_(Script::Handle(zone(), script.raw())),
+ tokens_iterator_(TokenStream::Handle(zone(), script.tokens()),
token_position),
token_kind_(Token::kILLEGAL),
current_block_(NULL),
@@ -347,13 +348,13 @@
current_member_(NULL),
allow_function_literals_(true),
parsed_function_(parsed_function),
- innermost_function_(Function::Handle(isolate_,
+ innermost_function_(Function::Handle(zone(),
parsed_function->function().raw())),
- literal_token_(LiteralToken::Handle(isolate_)),
- current_class_(Class::Handle(isolate_,
+ literal_token_(LiteralToken::Handle(zone())),
+ current_class_(Class::Handle(zone(),
parsed_function->function().Owner())),
- library_(Library::Handle(isolate_, Class::Handle(
- isolate_,
+ library_(Library::Handle(zone(), Class::Handle(
+ zone(),
parsed_function->function().origin()).library())),
try_blocks_list_(NULL),
last_used_try_index_(0),
@@ -392,7 +393,7 @@
void Parser::SetScript(const Script& script, intptr_t token_pos) {
script_ = script.raw();
tokens_iterator_.SetStream(
- TokenStream::Handle(I, script.tokens()), token_pos);
+ TokenStream::Handle(Z, script.tokens()), token_pos);
token_kind_ = Token::kILLEGAL;
}
@@ -463,7 +464,7 @@
String* Parser::CurrentLiteral() const {
String& result =
- String::ZoneHandle(I, tokens_iterator_.CurrentLiteral());
+ String::ZoneHandle(Z, tokens_iterator_.CurrentLiteral());
return &result;
}
@@ -480,7 +481,7 @@
ASSERT(literal_token_.kind() == Token::kINTEGER);
RawInteger* ri = Integer::RawCast(literal_token_.value());
if (FLAG_throw_on_javascript_int_overflow) {
- const Integer& i = Integer::Handle(I, ri);
+ const Integer& i = Integer::Handle(Z, ri);
if (i.CheckJavascriptIntegerOverflow()) {
ReportError(TokenPos(),
"Integer literal does not fit in a Javascript integer: %s.",
@@ -789,15 +790,17 @@
RawObject* Parser::ParseFunctionParameters(const Function& func) {
ASSERT(!func.IsNull());
- Isolate* isolate = Isolate::Current();
- StackZone zone(isolate);
+ Thread* thread = Thread::Current();
+ Isolate* isolate = thread->isolate();
+ StackZone stack_zone(isolate);
+ Zone* zone = stack_zone.GetZone();
LongJumpScope jump;
if (setjmp(*jump.Set()) == 0) {
- const Script& script = Script::Handle(isolate, func.script());
- const Class& owner = Class::Handle(isolate, func.Owner());
+ const Script& script = Script::Handle(zone, func.script());
+ const Class& owner = Class::Handle(zone, func.Owner());
ASSERT(!owner.IsNull());
ParsedFunction* parsed_function = new ParsedFunction(
- isolate, Function::ZoneHandle(isolate, func.raw()));
+ thread, Function::ZoneHandle(zone, func.raw()));
Parser parser(script, parsed_function, func.token_pos());
parser.SkipFunctionPreamble();
ParamList params;
@@ -834,16 +837,17 @@
void Parser::ParseFunction(ParsedFunction* parsed_function) {
- Isolate* isolate = Isolate::Current();
+ Isolate* isolate = parsed_function->isolate();
+ Zone* zone = parsed_function->zone();
TimerScope timer(FLAG_compiler_stats, &CompilerStats::parser_timer);
CompilerStats::num_functions_compiled++;
ASSERT(isolate->long_jump_base()->IsSafeToJump());
ASSERT(parsed_function != NULL);
const Function& func = parsed_function->function();
- const Script& script = Script::Handle(isolate, func.script());
+ const Script& script = Script::Handle(zone, func.script());
Parser parser(script, parsed_function, func.token_pos());
SequenceNode* node_sequence = NULL;
- Array& default_parameter_values = Array::ZoneHandle(isolate, Array::null());
+ Array& default_parameter_values = Array::ZoneHandle(zone, Array::null());
switch (func.kind()) {
case RawFunction::kRegularFunction:
case RawFunction::kClosureFunction:
@@ -925,16 +929,18 @@
RawObject* Parser::ParseMetadata(const Class& cls, intptr_t token_pos) {
- Isolate* isolate = Isolate::Current();
- StackZone zone(isolate);
+ Thread* thread = Thread::Current();
+ Isolate* isolate = thread->isolate();
+ StackZone stack_zone(isolate);
+ Zone* zone = stack_zone.GetZone();
LongJumpScope jump;
if (setjmp(*jump.Set()) == 0) {
- const Script& script = Script::Handle(isolate, cls.script());
+ const Script& script = Script::Handle(zone, cls.script());
// Parsing metadata can involve following paths in the parser that are
// normally used for expressions and assume current_function is non-null,
// so we create a fake function to use as the current_function rather than
// scattering special cases throughout the parser.
- const Function& fake_function = Function::ZoneHandle(Function::New(
+ const Function& fake_function = Function::ZoneHandle(zone, Function::New(
Symbols::At(),
RawFunction::kRegularFunction,
true, // is_static
@@ -946,7 +952,7 @@
token_pos));
fake_function.set_is_debuggable(false);
ParsedFunction* parsed_function =
- new ParsedFunction(isolate, fake_function);
+ new ParsedFunction(thread, fake_function);
Parser parser(script, parsed_function, token_pos);
parser.set_current_class(cls);
@@ -953,7 +959,7 @@
RawObject* metadata = parser.EvaluateMetadata();
return metadata;
} else {
- Error& error = Error::Handle(isolate);
+ Error& error = Error::Handle(zone);
error = isolate->object_store()->sticky_error();
isolate->object_store()->clear_sticky_error();
return error.raw();
@@ -966,7 +972,7 @@
RawArray* Parser::EvaluateMetadata() {
CheckToken(Token::kAT, "Metadata character '@' expected");
GrowableObjectArray& meta_values =
- GrowableObjectArray::Handle(I, GrowableObjectArray::New());
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
while (CurrentToken() == Token::kAT) {
ConsumeToken();
intptr_t expr_pos = TokenPos();
@@ -974,7 +980,7 @@
ExpectIdentifier("identifier expected");
}
// Reject expressions with deferred library prefix eagerly.
- Object& obj = Object::Handle(I,
+ Object& obj = Object::Handle(Z,
library_.LookupLocalObject(*CurrentLiteral()));
if (!obj.IsNull() && obj.IsLibraryPrefix()) {
if (LibraryPrefix::Cast(obj).is_deferred_load()) {
@@ -992,7 +998,7 @@
} else {
// Can be x, C.x, or L.C.x.
expr = ParsePrimary(); // Consumes x, C or L.C.
- Class& cls = Class::Handle(I);
+ Class& cls = Class::Handle(Z);
if (expr->IsPrimaryNode()) {
PrimaryNode* primary_node = expr->AsPrimaryNode();
if (primary_node->primary().IsClass()) {
@@ -1015,7 +1021,7 @@
ConsumeToken();
const intptr_t ident_pos = TokenPos();
String* ident = ExpectIdentifier("identifier expected");
- const Field& field = Field::Handle(I, cls.LookupStaticField(*ident));
+ const Field& field = Field::Handle(Z, cls.LookupStaticField(*ident));
if (field.IsNull()) {
ReportError(ident_pos,
"Class '%s' has no field '%s'",
@@ -1048,7 +1054,7 @@
OpenFunctionBlock(parsed_function()->function());
intptr_t expr_pos = TokenPos();
AstNode* expr = ParseExpr(kAllowConst, kConsumeCascades);
- ReturnNode* ret = new(I) ReturnNode(expr_pos, expr);
+ ReturnNode* ret = new(Z) ReturnNode(expr_pos, expr);
current_block_->statements->Add(ret);
return CloseBlock();
}
@@ -1057,17 +1063,19 @@
ParsedFunction* Parser::ParseStaticFieldInitializer(const Field& field) {
ASSERT(field.is_static());
ASSERT(field.value() == Object::transition_sentinel().raw());
- Isolate* isolate = Isolate::Current();
+ Thread* thread = Thread::Current();
+ // TODO(koda): Should there be a StackZone here?
+ Zone* zone = thread->zone();
- const Class& script_cls = Class::Handle(isolate, field.origin());
- const Script& script = Script::Handle(isolate, script_cls.script());
+ const Class& script_cls = Class::Handle(zone, field.origin());
+ const Script& script = Script::Handle(zone, script_cls.script());
- const String& field_name = String::Handle(isolate, field.name());
- String& init_name = String::Handle(isolate,
+ const String& field_name = String::Handle(zone, field.name());
+ String& init_name = String::Handle(zone,
String::Concat(Symbols::InitPrefix(), field_name));
init_name = Symbols::New(init_name);
- const Function& initializer = Function::ZoneHandle(isolate,
+ const Function& initializer = Function::ZoneHandle(zone,
Function::New(init_name,
RawFunction::kRegularFunction,
true, // static
@@ -1077,7 +1085,7 @@
false, // !native
Class::Handle(field.owner()),
field.token_pos()));
- initializer.set_result_type(AbstractType::Handle(isolate, field.type()));
+ initializer.set_result_type(AbstractType::Handle(zone, field.type()));
// Static initializer functions are hidden from the user.
// Since they are only executed once, we avoid optimizing
// and inlining them. After the field is initialized, the
@@ -1087,7 +1095,7 @@
initializer.SetIsOptimizable(false);
initializer.set_is_inlinable(false);
- ParsedFunction* parsed_function = new ParsedFunction(isolate, initializer);
+ ParsedFunction* parsed_function = new ParsedFunction(thread, initializer);
Parser parser(script, parsed_function, field.token_pos());
SequenceNode* body = parser.ParseStaticInitializer();
@@ -1110,8 +1118,9 @@
RawObject* Parser::ParseFunctionFromSource(const Class& owning_class,
const String& source) {
- Isolate* isolate = Isolate::Current();
- StackZone zone(isolate);
+ Thread* thread = Thread::Current();
+ Isolate* isolate = thread->isolate();
+ StackZone stack_zone(isolate);
LongJumpScope jump;
if (setjmp(*jump.Set()) == 0) {
const String& uri = String::Handle(Symbols::New("dynamically-added"));
@@ -1132,7 +1141,7 @@
const Function& func =
Function::ZoneHandle(Function::RawCast(members.functions().At(0)));
func.set_eval_script(script);
- ParsedFunction* parsed_function = new ParsedFunction(isolate, func);
+ ParsedFunction* parsed_function = new ParsedFunction(thread, func);
Parser::ParseFunction(parsed_function);
return func.raw();
} else {
@@ -1150,7 +1159,7 @@
ParamList params;
ASSERT(func.num_fixed_parameters() == 0); // static.
ASSERT(!func.HasOptionalParameters());
- ASSERT(AbstractType::Handle(I, func.result_type()).IsResolved());
+ ASSERT(AbstractType::Handle(Z, func.result_type()).IsResolved());
// Build local scope for function and populate with the formal parameters.
OpenFunctionBlock(func);
@@ -1158,9 +1167,9 @@
intptr_t ident_pos = TokenPos();
const String& field_name = *ExpectIdentifier("field name expected");
- const Class& field_class = Class::Handle(I, func.Owner());
+ const Class& field_class = Class::Handle(Z, func.Owner());
const Field& field =
- Field::ZoneHandle(I, field_class.LookupStaticField(field_name));
+ Field::ZoneHandle(Z, field_class.LookupStaticField(field_name));
// Static final fields must have an initializer.
ExpectToken(Token::kASSIGN);
@@ -1185,7 +1194,7 @@
// The runtime function will detect circular dependencies in expressions
// and handle errors while evaluating the expression.
current_block_->statements->Add(
- new (I) InitStaticFieldNode(ident_pos, field));
+ new (Z) InitStaticFieldNode(ident_pos, field));
ReturnNode* return_node =
new ReturnNode(ident_pos,
new LoadStaticFieldNode(ident_pos, field));
@@ -1208,7 +1217,7 @@
params.AddReceiver(ReceiverType(current_class()), ident_pos);
ASSERT(func.num_fixed_parameters() == 1); // receiver.
ASSERT(!func.HasOptionalParameters());
- ASSERT(AbstractType::Handle(I, func.result_type()).IsResolved());
+ ASSERT(AbstractType::Handle(Z, func.result_type()).IsResolved());
// Build local scope for function and populate with the formal parameters.
OpenFunctionBlock(func);
@@ -1217,12 +1226,12 @@
// Receiver is local 0.
LocalVariable* receiver = current_block_->scope->VariableAt(0);
LoadLocalNode* load_receiver = new LoadLocalNode(ident_pos, receiver);
- String& field_name = String::Handle(I, func.name());
+ String& field_name = String::Handle(Z, func.name());
field_name = Field::NameFromGetter(field_name);
- const Class& field_class = Class::Handle(I, func.Owner());
+ const Class& field_class = Class::Handle(Z, func.Owner());
const Field& field =
- Field::ZoneHandle(I, field_class.LookupInstanceField(field_name));
+ Field::ZoneHandle(Z, field_class.LookupInstanceField(field_name));
ASSERT(!field.IsNull());
LoadInstanceFieldNode* load_field =
@@ -1244,10 +1253,10 @@
// func.token_pos() points to the name of the field.
const intptr_t ident_pos = func.token_pos();
const String& field_name = *CurrentLiteral();
- const Class& field_class = Class::ZoneHandle(I, func.Owner());
+ const Class& field_class = Class::ZoneHandle(Z, func.Owner());
const Field& field =
- Field::ZoneHandle(I, field_class.LookupInstanceField(field_name));
- const AbstractType& field_type = AbstractType::ZoneHandle(I, field.type());
+ Field::ZoneHandle(Z, field_class.LookupInstanceField(field_name));
+ const AbstractType& field_type = AbstractType::ZoneHandle(Z, field.type());
ParamList params;
ASSERT(current_class().raw() == func.Owner());
@@ -1257,7 +1266,7 @@
&field_type);
ASSERT(func.num_fixed_parameters() == 2); // receiver, value.
ASSERT(!func.HasOptionalParameters());
- ASSERT(AbstractType::Handle(I, func.result_type()).IsVoidType());
+ ASSERT(AbstractType::Handle(Z, func.result_type()).IsVoidType());
// Build local scope for function and populate with the formal parameters.
OpenFunctionBlock(func);
@@ -1298,7 +1307,7 @@
ClosureNode* closure = new ClosureNode(
ident_pos,
- Function::ZoneHandle(I, func.extracted_method_closure()),
+ Function::ZoneHandle(Z, func.extracted_method_closure()),
load_receiver,
NULL);
@@ -1321,8 +1330,8 @@
ParamDesc p;
char name[64];
OS::SNPrint(name, 64, ":p%" Pd, i);
- p.name = &String::ZoneHandle(I, Symbols::New(name));
- p.type = &Type::ZoneHandle(I, Type::DynamicType());
+ p.name = &String::ZoneHandle(Z, Symbols::New(name));
+ p.type = &Type::ZoneHandle(Z, Type::DynamicType());
params.parameters->Add(p);
params.num_fixed_parameters++;
}
@@ -1332,8 +1341,8 @@
for (; i < desc.Count(); ++i) {
ParamDesc p;
intptr_t index = i - desc.PositionalCount();
- p.name = &String::ZoneHandle(I, desc.NameAt(index));
- p.type = &Type::ZoneHandle(I, Type::DynamicType());
+ p.name = &String::ZoneHandle(Z, desc.NameAt(index));
+ p.type = &Type::ZoneHandle(Z, Type::DynamicType());
p.default_value = &Object::null_object();
params.parameters->Add(p);
params.num_optional_parameters++;
@@ -1357,7 +1366,7 @@
ASSERT(func.token_pos() == 0);
ASSERT(current_class().raw() == func.Owner());
- ArgumentsDescriptor desc(Array::Handle(I, func.saved_args_desc()));
+ ArgumentsDescriptor desc(Array::Handle(Z, func.saved_args_desc()));
ASSERT(desc.Count() > 0);
// Set up scope for this function.
@@ -1372,27 +1381,27 @@
if (desc.NamedCount() > 0) {
const Array& arg_names =
- Array::ZoneHandle(I, Array::New(desc.NamedCount()));
+ Array::ZoneHandle(Z, Array::New(desc.NamedCount()));
for (intptr_t i = 0; i < arg_names.Length(); ++i) {
- arg_names.SetAt(i, String::Handle(I, desc.NameAt(i)));
+ arg_names.SetAt(i, String::Handle(Z, desc.NameAt(i)));
}
func_args->set_names(arg_names);
}
- const String& func_name = String::ZoneHandle(I, func.name());
+ const String& func_name = String::ZoneHandle(Z, func.name());
ArgumentListNode* arguments = BuildNoSuchMethodArguments(
token_pos, func_name, *func_args, NULL, false);
const intptr_t kNumArguments = 2; // Receiver, InvocationMirror.
ArgumentsDescriptor args_desc(
- Array::Handle(I, ArgumentsDescriptor::New(kNumArguments)));
- Function& no_such_method = Function::ZoneHandle(I,
- Resolver::ResolveDynamicForReceiverClass(Class::Handle(I, func.Owner()),
+ Array::Handle(Z, ArgumentsDescriptor::New(kNumArguments)));
+ Function& no_such_method = Function::ZoneHandle(Z,
+ Resolver::ResolveDynamicForReceiverClass(Class::Handle(Z, func.Owner()),
Symbols::NoSuchMethod(),
args_desc));
if (no_such_method.IsNull()) {
// If noSuchMethod(i) is not found, call Object:noSuchMethod.
no_such_method ^= Resolver::ResolveDynamicForReceiverClass(
- Class::Handle(I, I->object_store()->object_class()),
+ Class::Handle(Z, I->object_store()->object_class()),
Symbols::NoSuchMethod(),
args_desc);
}
@@ -1414,7 +1423,7 @@
ASSERT(func.token_pos() == 0);
ASSERT(current_class().raw() == func.Owner());
- const Array& args_desc = Array::Handle(I, func.saved_args_desc());
+ const Array& args_desc = Array::Handle(Z, func.saved_args_desc());
ArgumentsDescriptor desc(args_desc);
ASSERT(desc.Count() > 0);
@@ -1426,16 +1435,16 @@
ArgumentListNode* no_args = new ArgumentListNode(token_pos);
LoadLocalNode* receiver = new LoadLocalNode(token_pos, scope->VariableAt(0));
- const String& name = String::Handle(I, func.name());
- const String& getter_name = String::ZoneHandle(I,
- Symbols::New(String::Handle(I, Field::GetterName(name))));
- InstanceCallNode* getter_call = new(I) InstanceCallNode(
+ const String& name = String::Handle(Z, func.name());
+ const String& getter_name = String::ZoneHandle(Z,
+ Symbols::New(String::Handle(Z, Field::GetterName(name))));
+ InstanceCallNode* getter_call = new(Z) InstanceCallNode(
token_pos, receiver, getter_name, no_args);
// Pass arguments 1..n to the closure call.
- ArgumentListNode* args = new(I) ArgumentListNode(token_pos);
+ ArgumentListNode* args = new(Z) ArgumentListNode(token_pos);
const Array& names = Array::Handle(
- I, Array::New(desc.NamedCount(), Heap::kOld));
+ Z, Array::New(desc.NamedCount(), Heap::kOld));
// Positional parameters.
intptr_t i = 1;
for (; i < desc.PositionalCount(); ++i) {
@@ -1443,13 +1452,13 @@
}
// Named parameters.
for (; i < desc.Count(); i++) {
- args->Add(new(I) LoadLocalNode(token_pos, scope->VariableAt(i)));
+ args->Add(new(Z) LoadLocalNode(token_pos, scope->VariableAt(i)));
intptr_t index = i - desc.PositionalCount();
- names.SetAt(index, String::Handle(I, desc.NameAt(index)));
+ names.SetAt(index, String::Handle(Z, desc.NameAt(index)));
}
args->set_names(names);
- const Class& owner = Class::Handle(I, func.Owner());
+ const Class& owner = Class::Handle(Z, func.Owner());
ASSERT(!owner.IsNull());
AstNode* result = NULL;
if (owner.IsSignatureClass() && name.Equals(Symbols::Call())) {
@@ -1529,7 +1538,7 @@
bool this_seen = false;
if (evaluate_metadata && (CurrentToken() == Token::kAT)) {
- parameter.metadata = &Array::ZoneHandle(I, EvaluateMetadata());
+ parameter.metadata = &Array::ZoneHandle(Z, EvaluateMetadata());
} else {
SkipMetadata();
}
@@ -1543,7 +1552,7 @@
// The parameter type is the 'dynamic' type.
// If this is an initializing formal, its type will be set to the type of
// the respective field when the constructor is fully parsed.
- parameter.type = &Type::ZoneHandle(I, Type::DynamicType());
+ parameter.type = &Type::ZoneHandle(Z, Type::DynamicType());
}
if (CurrentToken() == Token::kTHIS) {
ConsumeToken();
@@ -1556,7 +1565,7 @@
// This must later be changed to a closure type if we recognize
// a closure/function type parameter. We check this at the end
// of ParseFormalParameter.
- parameter.type = &Type::ZoneHandle(I, Type::VoidType());
+ parameter.type = &Type::ZoneHandle(Z, Type::VoidType());
}
if (parameter.type == NULL) {
// At this point, we must see an identifier for the type or the
@@ -1577,13 +1586,13 @@
// mode, because they are part of the function type of closurized
// functions appearing in type tests with typedefs.
parameter.has_explicit_type = true;
- parameter.type = &AbstractType::ZoneHandle(I,
+ parameter.type = &AbstractType::ZoneHandle(Z,
ParseType(is_top_level_ ? ClassFinalizer::kResolveTypeParameters :
ClassFinalizer::kCanonicalize));
} else {
// If this is an initializing formal, its type will be set to the type of
// the respective field when the constructor is fully parsed.
- parameter.type = &Type::ZoneHandle(I, Type::DynamicType());
+ parameter.type = &Type::ZoneHandle(Z, Type::DynamicType());
}
}
if (!this_seen && (CurrentToken() == Token::kTHIS)) {
@@ -1623,7 +1632,7 @@
if (!var_seen && !parameter.is_final) {
// The parsed parameter type is actually the function result type.
const AbstractType& result_type =
- AbstractType::Handle(I, parameter.type->raw());
+ AbstractType::Handle(Z, parameter.type->raw());
// Finish parsing the function type parameter.
ParamList func_params;
@@ -1632,13 +1641,13 @@
func_params.AddFinalParameter(
TokenPos(),
&Symbols::ClosureParameter(),
- &Type::ZoneHandle(I, Type::DynamicType()));
+ &Type::ZoneHandle(Z, Type::DynamicType()));
const bool no_explicit_default_values = false;
ParseFormalParameterList(no_explicit_default_values, false, &func_params);
// The field 'is_static' has no meaning for signature functions.
- const Function& signature_function = Function::Handle(I,
+ const Function& signature_function = Function::Handle(Z,
Function::New(*parameter.name,
RawFunction::kSignatureFunction,
/* is_static = */ false,
@@ -1651,12 +1660,12 @@
signature_function.set_result_type(result_type);
signature_function.set_is_debuggable(false);
AddFormalParamsToFunction(&func_params, signature_function);
- const String& signature = String::Handle(I,
+ const String& signature = String::Handle(Z,
signature_function.Signature());
// Lookup the signature class, i.e. the class whose name is the signature.
// We only lookup in the current library, but not in its imports, and only
// create a new canonical signature class if it does not exist yet.
- Class& signature_class = Class::ZoneHandle(I,
+ Class& signature_class = Class::ZoneHandle(Z,
library_.LookupLocalClass(signature));
if (signature_class.IsNull()) {
signature_class = Class::NewSignatureClass(signature,
@@ -1674,7 +1683,7 @@
}
ASSERT(signature_function.signature_class() == signature_class.raw());
Type& signature_type =
- Type::ZoneHandle(I, signature_class.SignatureType());
+ Type::ZoneHandle(Z, signature_class.SignatureType());
if (!is_top_level_ && !signature_type.IsFinalized()) {
signature_type ^= ClassFinalizer::FinalizeType(
signature_class, signature_type, ClassFinalizer::kCanonicalize);
@@ -1814,12 +1823,12 @@
ArgumentListNode* arguments,
bool resolve_getter,
bool* is_no_such_method) {
- const Class& super_class = Class::Handle(I, current_class().SuperClass());
+ const Class& super_class = Class::Handle(Z, current_class().SuperClass());
if (super_class.IsNull()) {
ReportError(token_pos, "class '%s' does not have a superclass",
- String::Handle(I, current_class().Name()).ToCString());
+ String::Handle(Z, current_class().Name()).ToCString());
}
- Function& super_func = Function::Handle(I,
+ Function& super_func = Function::Handle(Z,
Resolver::ResolveDynamicAnyArgs(super_class, name));
if (!super_func.IsNull() &&
!super_func.AreValidArguments(arguments->length(),
@@ -1827,7 +1836,7 @@
NULL)) {
super_func = Function::null();
} else if (super_func.IsNull() && resolve_getter) {
- const String& getter_name = String::ZoneHandle(I, Field::GetterName(name));
+ const String& getter_name = String::ZoneHandle(Z, Field::GetterName(name));
super_func = Resolver::ResolveDynamicAnyArgs(super_class, getter_name);
ASSERT(super_func.IsNull() ||
(super_func.kind() != RawFunction::kImplicitStaticFinalGetter));
@@ -1926,7 +1935,7 @@
const bool kResolveGetter = true;
bool is_no_such_method = false;
- const Function& super_function = Function::ZoneHandle(I,
+ const Function& super_function = Function::ZoneHandle(Z,
GetSuperFunction(supercall_pos,
function_name,
arguments,
@@ -1935,7 +1944,7 @@
if (super_function.IsGetterFunction() ||
super_function.IsImplicitGetterFunction()) {
const Class& super_class =
- Class::ZoneHandle(I, current_class().SuperClass());
+ Class::ZoneHandle(Z, current_class().SuperClass());
AstNode* closure = new StaticGetterNode(supercall_pos,
LoadReceiver(supercall_pos),
/* is_super_getter */ true,
@@ -1970,13 +1979,13 @@
(op == Token::kBIT_NOT)) {
// Resolve the operator function in the superclass.
const String& operator_function_name =
- String::ZoneHandle(I, Symbols::New(Token::Str(op)));
+ String::ZoneHandle(Z, Symbols::New(Token::Str(op)));
ArgumentListNode* op_arguments = new ArgumentListNode(super_pos);
AstNode* receiver = LoadReceiver(super_pos);
op_arguments->Add(receiver);
const bool kResolveGetter = false;
bool is_no_such_method = false;
- const Function& super_operator = Function::ZoneHandle(I,
+ const Function& super_operator = Function::ZoneHandle(Z,
GetSuperFunction(super_pos,
operator_function_name,
op_arguments,
@@ -2005,7 +2014,7 @@
ExpectToken(Token::kRBRACK);
AstNode* receiver = LoadReceiver(operator_pos);
const Class& super_class =
- Class::ZoneHandle(I, current_class().SuperClass());
+ Class::ZoneHandle(Z, current_class().SuperClass());
ASSERT(!super_class.IsNull());
super_op =
new LoadIndexedNode(operator_pos, receiver, index_expr, super_class);
@@ -2031,10 +2040,10 @@
// Resolve the operator function in the superclass.
const String& operator_function_name =
- String::ZoneHandle(I, Symbols::New(Token::Str(op)));
+ String::ZoneHandle(Z, Symbols::New(Token::Str(op)));
const bool kResolveGetter = false;
bool is_no_such_method = false;
- const Function& super_operator = Function::ZoneHandle(I,
+ const Function& super_operator = Function::ZoneHandle(Z,
GetSuperFunction(operator_pos,
operator_function_name,
op_arguments,
@@ -2057,13 +2066,13 @@
intptr_t token_pos,
AstNode* receiver) {
Function& implicit_closure_function =
- Function::ZoneHandle(I, func.ImplicitClosureFunction());
+ Function::ZoneHandle(Z, func.ImplicitClosureFunction());
if (receiver != NULL) {
// If we create an implicit instance closure from inside a closure of a
// parameterized class, make sure that the receiver is captured as
// instantiator.
if (current_block_->scope->function_level() > 0) {
- const Class& signature_class = Class::Handle(I,
+ const Class& signature_class = Class::Handle(Z,
implicit_closure_function.signature_class());
if (signature_class.NumTypeParameters() > 0) {
CaptureInstantiator();
@@ -2077,21 +2086,21 @@
AstNode* Parser::ParseSuperFieldAccess(const String& field_name,
intptr_t field_pos) {
TRACE_PARSER("ParseSuperFieldAccess");
- const Class& super_class = Class::ZoneHandle(I, current_class().SuperClass());
+ const Class& super_class = Class::ZoneHandle(Z, current_class().SuperClass());
if (super_class.IsNull()) {
ReportError("class '%s' does not have a superclass",
- String::Handle(I, current_class().Name()).ToCString());
+ String::Handle(Z, current_class().Name()).ToCString());
}
AstNode* implicit_argument = LoadReceiver(field_pos);
const String& getter_name =
- String::ZoneHandle(I, Field::GetterName(field_name));
- const Function& super_getter = Function::ZoneHandle(I,
+ String::ZoneHandle(Z, Field::GetterName(field_name));
+ const Function& super_getter = Function::ZoneHandle(Z,
Resolver::ResolveDynamicAnyArgs(super_class, getter_name));
if (super_getter.IsNull()) {
const String& setter_name =
- String::ZoneHandle(I, Field::SetterName(field_name));
- const Function& super_setter = Function::ZoneHandle(I,
+ String::ZoneHandle(Z, Field::SetterName(field_name));
+ const Function& super_setter = Function::ZoneHandle(Z,
Resolver::ResolveDynamicAnyArgs(super_class, setter_name));
if (super_setter.IsNull()) {
// Check if this is an access to an implicit closure using 'super'.
@@ -2098,7 +2107,7 @@
// If a function exists of the specified field_name then try
// accessing it as a getter, at runtime we will handle this by
// creating an implicit closure of the function and returning it.
- const Function& super_function = Function::ZoneHandle(I,
+ const Function& super_function = Function::ZoneHandle(Z,
Resolver::ResolveDynamicAnyArgs(super_class, field_name));
if (!super_function.IsNull()) {
// In case CreateAssignmentNode is called later on this
@@ -2120,16 +2129,16 @@
intptr_t supercall_pos,
LocalVariable* receiver,
ArgumentListNode* forwarding_args) {
- const Class& super_class = Class::Handle(I, cls.SuperClass());
+ const Class& super_class = Class::Handle(Z, cls.SuperClass());
// Omit the implicit super() if there is no super class (i.e.
// we're not compiling class Object), or if the super class is an
// artificially generated "wrapper class" that has no constructor.
if (super_class.IsNull() ||
(super_class.num_native_fields() > 0 &&
- Class::Handle(I, super_class.SuperClass()).IsObjectClass())) {
+ Class::Handle(Z, super_class.SuperClass()).IsObjectClass())) {
return;
}
- String& super_ctor_name = String::Handle(I, super_class.Name());
+ String& super_ctor_name = String::Handle(Z, super_class.Name());
super_ctor_name = String::Concat(super_ctor_name, Symbols::Dot());
ArgumentListNode* arguments = new ArgumentListNode(supercall_pos);
@@ -2139,7 +2148,7 @@
// Implicit construction phase parameter is second argument.
AstNode* phase_parameter =
new LiteralNode(supercall_pos,
- Smi::ZoneHandle(I, Smi::New(Function::kCtorPhaseAll)));
+ Smi::ZoneHandle(Z, Smi::New(Function::kCtorPhaseAll)));
arguments->Add(phase_parameter);
// If this is a super call in a forwarding constructor, add the user-
@@ -2149,8 +2158,8 @@
for (int i = 0; i < forwarding_args->length(); i++) {
arguments->Add(forwarding_args->NodeAt(i));
}
- String& ctor_name = String::Handle(I, current_function().name());
- String& class_name = String::Handle(I, cls.Name());
+ String& ctor_name = String::Handle(Z, current_function().name());
+ String& class_name = String::Handle(Z, cls.Name());
if (ctor_name.Length() > class_name.Length() + 1) {
// Generating a forwarding call to a named constructor 'C.n'.
// Add the constructor name 'n' to the super constructor.
@@ -2160,24 +2169,24 @@
}
// Resolve super constructor function and check arguments.
- const Function& super_ctor = Function::ZoneHandle(I,
+ const Function& super_ctor = Function::ZoneHandle(Z,
super_class.LookupConstructor(super_ctor_name));
if (super_ctor.IsNull()) {
ReportError(supercall_pos,
"unresolved implicit call to super constructor '%s()'",
- String::Handle(I, super_class.Name()).ToCString());
+ String::Handle(Z, super_class.Name()).ToCString());
}
if (current_function().is_const() && !super_ctor.is_const()) {
ReportError(supercall_pos, "implicit call to non-const super constructor");
}
- String& error_message = String::Handle(I);
+ String& error_message = String::Handle(Z);
if (!super_ctor.AreValidArguments(arguments->length(),
arguments->names(),
&error_message)) {
ReportError(supercall_pos,
"invalid arguments passed to super constructor '%s()': %s",
- String::Handle(I, super_class.Name()).ToCString(),
+ String::Handle(Z, super_class.Name()).ToCString(),
error_message.ToCString());
}
current_block_->statements->Add(
@@ -2191,9 +2200,9 @@
ASSERT(CurrentToken() == Token::kSUPER);
const intptr_t supercall_pos = TokenPos();
ConsumeToken();
- const Class& super_class = Class::Handle(I, cls.SuperClass());
+ const Class& super_class = Class::Handle(Z, cls.SuperClass());
ASSERT(!super_class.IsNull());
- String& ctor_name = String::Handle(I, super_class.Name());
+ String& ctor_name = String::Handle(Z, super_class.Name());
ctor_name = String::Concat(ctor_name, Symbols::Dot());
if (CurrentToken() == Token::kPERIOD) {
ConsumeToken();
@@ -2212,7 +2221,7 @@
// super initializer.
AstNode* phase_parameter =
new LiteralNode(supercall_pos,
- Smi::ZoneHandle(I, Smi::New(Function::kCtorPhaseAll)));
+ Smi::ZoneHandle(Z, Smi::New(Function::kCtorPhaseAll)));
arguments->Add(phase_parameter);
// 'this' parameter must not be accessible to the other super call arguments.
receiver->set_invisible(true);
@@ -2220,7 +2229,7 @@
receiver->set_invisible(false);
// Resolve the constructor.
- const Function& super_ctor = Function::ZoneHandle(I,
+ const Function& super_ctor = Function::ZoneHandle(Z,
super_class.LookupConstructor(ctor_name));
if (super_ctor.IsNull()) {
ReportError(supercall_pos,
@@ -2230,7 +2239,7 @@
if (current_function().is_const() && !super_ctor.is_const()) {
ReportError(supercall_pos, "super constructor must be const");
}
- String& error_message = String::Handle(I);
+ String& error_message = String::Handle(Z);
if (!super_ctor.AreValidArguments(arguments->length(),
arguments->names(),
&error_message)) {
@@ -2268,18 +2277,18 @@
ReportError(field_pos,
"initializer expression must be compile time constant.");
}
- Field& field = Field::ZoneHandle(I, cls.LookupInstanceField(field_name));
+ Field& field = Field::ZoneHandle(Z, cls.LookupInstanceField(field_name));
if (field.IsNull()) {
ReportError(field_pos, "unresolved reference to instance field '%s'",
field_name.ToCString());
}
EnsureExpressionTemp();
- AstNode* instance = new(I) LoadLocalNode(field_pos, receiver);
+ AstNode* instance = new(Z) LoadLocalNode(field_pos, receiver);
AstNode* initializer = CheckDuplicateFieldInit(field_pos,
initialized_fields, instance, &field, init_expr);
if (initializer == NULL) {
initializer =
- new(I) StoreInstanceFieldNode(field_pos, instance, field, init_expr);
+ new(Z) StoreInstanceFieldNode(field_pos, instance, field, init_expr);
}
return initializer;
}
@@ -2286,8 +2295,8 @@
void Parser::CheckFieldsInitialized(const Class& cls) {
- const Array& fields = Array::Handle(I, cls.fields());
- Field& field = Field::Handle(I);
+ const Array& fields = Array::Handle(Z, cls.fields());
+ Field& field = Field::Handle(Z);
SequenceNode* initializers = current_block_->statements;
for (int field_num = 0; field_num < fields.Length(); field_num++) {
field ^= fields.At(field_num);
@@ -2310,7 +2319,7 @@
if (found) continue;
- field.RecordStore(Object::Handle(I));
+ field.RecordStore(Object::Handle(Z));
}
}
@@ -2320,14 +2329,14 @@
// from a different class. We need to save and restore current
// class, library, and token stream (script).
ASSERT(current_class().raw() != field.origin());
- const Class& saved_class = Class::Handle(I, current_class().raw());
- const Library& saved_library = Library::Handle(I, library().raw());
- const Script& saved_script = Script::Handle(I, script().raw());
+ const Class& saved_class = Class::Handle(Z, current_class().raw());
+ const Library& saved_library = Library::Handle(Z, library().raw());
+ const Script& saved_script = Script::Handle(Z, script().raw());
const intptr_t saved_token_pos = TokenPos();
- set_current_class(Class::Handle(I, field.origin()));
- set_library(Library::Handle(I, current_class().library()));
- SetScript(Script::Handle(I, current_class().script()),
+ set_current_class(Class::Handle(Z, field.origin()));
+ set_library(Library::Handle(Z, current_class().library()));
+ SetScript(Script::Handle(Z, current_class().script()),
field.token_pos());
ASSERT(IsIdentifier());
@@ -2356,13 +2365,13 @@
LocalVariable* receiver,
GrowableArray<Field*>* initialized_fields) {
TRACE_PARSER("ParseInitializedInstanceFields");
- const Array& fields = Array::Handle(I, cls.fields());
- Field& f = Field::Handle(I);
+ const Array& fields = Array::Handle(Z, cls.fields());
+ Field& f = Field::Handle(Z);
const intptr_t saved_pos = TokenPos();
for (int i = 0; i < fields.Length(); i++) {
f ^= fields.At(i);
if (!f.is_static() && f.has_initializer()) {
- Field& field = Field::ZoneHandle(I);
+ Field& field = Field::ZoneHandle(Z);
field ^= fields.At(i);
if (field.is_final()) {
// Final fields with initializer expression may not be initialized
@@ -2443,7 +2452,7 @@
// List argumentNames,
// List existingArgumentNames);
- ArgumentListNode* nsm_args = new(I) ArgumentListNode(init_pos);
+ ArgumentListNode* nsm_args = new(Z) ArgumentListNode(init_pos);
// Object receiver.
nsm_args->Add(instance);
@@ -2450,32 +2459,32 @@
// String memberName.
String& setter_name = String::ZoneHandle(field->name());
setter_name = Field::SetterSymbol(setter_name);
- nsm_args->Add(new(I) LiteralNode(init_pos, setter_name));
+ nsm_args->Add(new(Z) LiteralNode(init_pos, setter_name));
// Smi invocation_type.
const int invocation_type =
InvocationMirror::EncodeType(InvocationMirror::kDynamic,
InvocationMirror::kSetter);
- nsm_args->Add(new(I) LiteralNode(
- init_pos, Smi::ZoneHandle(I, Smi::New(invocation_type))));
+ nsm_args->Add(new(Z) LiteralNode(
+ init_pos, Smi::ZoneHandle(Z, Smi::New(invocation_type))));
// List arguments.
GrowableArray<AstNode*> setter_args;
setter_args.Add(init_value);
- ArrayNode* setter_args_array = new(I) ArrayNode(
+ ArrayNode* setter_args_array = new(Z) ArrayNode(
init_pos,
- Type::ZoneHandle(I, Type::ArrayType()),
+ Type::ZoneHandle(Z, Type::ArrayType()),
setter_args);
nsm_args->Add(setter_args_array);
// List argumentNames.
// The missing implicit setter of the field has no argument names.
- nsm_args->Add(new(I) LiteralNode(init_pos, Array::ZoneHandle(I)));
+ nsm_args->Add(new(Z) LiteralNode(init_pos, Array::ZoneHandle(Z)));
// List existingArgumentNames.
// There is no setter for the final field, thus there are
// no existing names.
- nsm_args->Add(new(I) LiteralNode(init_pos, Array::ZoneHandle(I)));
+ nsm_args->Add(new(Z) LiteralNode(init_pos, Array::ZoneHandle(Z)));
AstNode* nsm_call =
MakeStaticCall(Symbols::NoSuchMethodError(),
@@ -2482,7 +2491,7 @@
Library::PrivateCoreLibName(Symbols::ThrowNew()),
nsm_args);
- LetNode* let = new(I) LetNode(init_pos);
+ LetNode* let = new(Z) LetNode(init_pos);
let->AddNode(init_value);
let->AddNode(nsm_call);
result = let;
@@ -2498,7 +2507,7 @@
if (initialized_field->raw() == field->raw()) {
ReportError(init_pos,
"duplicate initializer for field %s",
- String::Handle(I, field->name()).ToCString());
+ String::Handle(Z, field->name()).ToCString());
}
}
initialized_fields->Add(field);
@@ -2543,7 +2552,7 @@
ASSERT(CurrentToken() == Token::kTHIS);
const intptr_t call_pos = TokenPos();
ConsumeToken();
- String& ctor_name = String::Handle(I, cls.Name());
+ String& ctor_name = String::Handle(Z, cls.Name());
ctor_name = String::Concat(ctor_name, Symbols::Dot());
if (CurrentToken() == Token::kPERIOD) {
@@ -2566,12 +2575,12 @@
ParseActualParameters(arguments, kAllowConst);
receiver->set_invisible(false);
// Resolve the constructor.
- const Function& redirect_ctor = Function::ZoneHandle(I,
+ const Function& redirect_ctor = Function::ZoneHandle(Z,
cls.LookupConstructor(ctor_name));
if (redirect_ctor.IsNull()) {
ReportError(call_pos, "constructor '%s' not found", ctor_name.ToCString());
}
- String& error_message = String::Handle(I);
+ String& error_message = String::Handle(Z);
if (!redirect_ctor.AreValidArguments(arguments->length(),
arguments->names(),
&error_message)) {
@@ -2598,7 +2607,7 @@
LocalVariable* phase_parameter =
new LocalVariable(Scanner::kNoSourcePos,
Symbols::PhaseParameter(),
- Type::ZoneHandle(I, Type::SmiType()));
+ Type::ZoneHandle(Z, Type::SmiType()));
current_block_->scope->InsertParameterAt(1, phase_parameter);
// Parse expressions of instance fields that have an explicit
@@ -2628,7 +2637,7 @@
// TODO(hausner): Remove this limitation if the language spec indeed
// allows optional parameters.
if (func.HasOptionalParameters()) {
- const Class& super_class = Class::Handle(I, current_class().SuperClass());
+ const Class& super_class = Class::Handle(Z, current_class().SuperClass());
ReportError(ctor_pos,
"cannot generate an implicit mixin application constructor "
"forwarding to a super class constructor with optional "
@@ -2636,7 +2645,7 @@
"to class '%s' that redirects to the constructor with "
"optional parameters and invoke it via super from a "
"constructor of the class extending the mixin application",
- String::Handle(I, super_class.Name()).ToCString());
+ String::Handle(Z, super_class.Name()).ToCString());
}
// Prepare user-defined arguments to be forwarded to super call.
@@ -2645,8 +2654,8 @@
for (int i = 2; i < func.NumParameters(); i++) {
LocalVariable* param = new LocalVariable(
Scanner::kNoSourcePos,
- String::ZoneHandle(I, func.ParameterNameAt(i)),
- Type::ZoneHandle(I, Type::DynamicType()));
+ String::ZoneHandle(Z, func.ParameterNameAt(i)),
+ Type::ZoneHandle(Z, Type::DynamicType()));
current_block_->scope->InsertParameterAt(i, param);
forwarding_args->Add(new LoadLocalNode(Scanner::kNoSourcePos, param));
}
@@ -2667,12 +2676,12 @@
void Parser::CheckRecursiveInvocation() {
const GrowableObjectArray& pending_functions =
- GrowableObjectArray::Handle(I,
+ GrowableObjectArray::Handle(Z,
I->object_store()->pending_functions());
for (int i = 0; i < pending_functions.Length(); i++) {
if (pending_functions.At(i) == current_function().raw()) {
const String& fname =
- String::Handle(I, current_function().UserVisibleName());
+ String::Handle(Z, current_function().UserVisibleName());
ReportError("circular dependency for function %s", fname.ToCString());
}
}
@@ -2691,7 +2700,7 @@
ASSERT(!func.IsFactory());
ASSERT(!func.is_static());
ASSERT(!func.IsLocalFunction());
- const Class& cls = Class::Handle(I, func.Owner());
+ const Class& cls = Class::Handle(Z, func.Owner());
ASSERT(!cls.IsNull());
CheckRecursiveInvocation();
@@ -2720,7 +2729,7 @@
params.AddFinalParameter(
TokenPos(),
&Symbols::PhaseParameter(),
- &Type::ZoneHandle(I, Type::SmiType()));
+ &Type::ZoneHandle(Z, Type::SmiType()));
if (func.is_const()) {
params.SetImplicitlyFinal();
@@ -2728,7 +2737,7 @@
ParseFormalParameterList(allow_explicit_default_values, false, &params);
SetupDefaultsForOptionalParams(&params, default_parameter_values);
- ASSERT(AbstractType::Handle(I, func.result_type()).IsResolved());
+ ASSERT(AbstractType::Handle(Z, func.result_type()).IsResolved());
ASSERT(func.NumParameters() == params.parameters->length());
// Now populate function scope with the formal parameters.
@@ -2768,7 +2777,7 @@
if (param.is_field_initializer) {
const String& field_name = *param.name;
Field& field =
- Field::ZoneHandle(I, cls.LookupInstanceField(field_name));
+ Field::ZoneHandle(Z, cls.LookupInstanceField(field_name));
if (field.IsNull()) {
ReportError(param.name_pos,
"unresolved reference to instance field '%s'",
@@ -2782,7 +2791,7 @@
if (!param.has_explicit_type) {
const AbstractType& field_type =
- AbstractType::ZoneHandle(I, field.type());
+ AbstractType::ZoneHandle(Z, field.type());
param.type = &field_type;
// Parameter type was already set to dynamic when parsing the class
// declaration: fix it.
@@ -2805,7 +2814,7 @@
&field,
value);
if (initializer == NULL) {
- initializer = new(I) StoreInstanceFieldNode(
+ initializer = new(Z) StoreInstanceFieldNode(
param.name_pos, instance, field, value);
}
current_block_->statements->Add(initializer);
@@ -2832,13 +2841,13 @@
AstNode* phase_check = new BinaryOpNode(
Scanner::kNoSourcePos, Token::kBIT_AND, phase_value,
new LiteralNode(Scanner::kNoSourcePos,
- Smi::ZoneHandle(I, Smi::New(Function::kCtorPhaseInit))));
+ Smi::ZoneHandle(Z, Smi::New(Function::kCtorPhaseInit))));
AstNode* comparison =
new ComparisonNode(Scanner::kNoSourcePos,
Token::kNE_STRICT,
phase_check,
new LiteralNode(TokenPos(),
- Smi::ZoneHandle(I, Smi::New(0))));
+ Smi::ZoneHandle(Z, Smi::New(0))));
AstNode* guarded_init_statements =
new IfNode(Scanner::kNoSourcePos,
comparison,
@@ -2901,14 +2910,14 @@
const Function& super_ctor = super_call->function();
// Patch the initializer call so it only executes the super initializer.
initializer_args->SetNodeAt(1, new LiteralNode(
- body_pos, Smi::ZoneHandle(I, Smi::New(Function::kCtorPhaseInit))));
+ body_pos, Smi::ZoneHandle(Z, Smi::New(Function::kCtorPhaseInit))));
ArgumentListNode* super_call_args = new ArgumentListNode(body_pos);
// First argument is the receiver.
super_call_args->Add(new LoadLocalNode(body_pos, receiver));
// Second argument is the construction phase argument.
- AstNode* phase_parameter = new(I) LiteralNode(
- body_pos, Smi::ZoneHandle(I, Smi::New(Function::kCtorPhaseBody)));
+ AstNode* phase_parameter = new(Z) LiteralNode(
+ body_pos, Smi::ZoneHandle(Z, Smi::New(Function::kCtorPhaseBody)));
super_call_args->Add(phase_parameter);
super_call_args->set_names(initializer_args->names());
for (int i = 2; i < initializer_args->length(); i++) {
@@ -2998,7 +3007,7 @@
Array* default_parameter_values) {
TRACE_PARSER("ParseFunc");
Function& saved_innermost_function =
- Function::Handle(I, innermost_function().raw());
+ Function::Handle(Z, innermost_function().raw());
innermost_function_ = func.raw();
// Save current try index. Try index starts at zero for each function.
@@ -3010,7 +3019,7 @@
// temporaries are added.
LocalVariable* saved_saved_try_ctx = parsed_function()->saved_try_ctx();
const String& saved_async_saved_try_ctx_name =
- String::Handle(I, parsed_function()->async_saved_try_ctx_name());
+ String::Handle(Z, parsed_function()->async_saved_try_ctx_name());
parsed_function()->reset_saved_try_ctx_vars();
LocalScope* saved_async_temp_scope = async_temp_scope_;
@@ -3033,7 +3042,7 @@
params.AddFinalParameter(
TokenPos(),
&Symbols::ClosureParameter(),
- &Type::ZoneHandle(I, Type::DynamicType()));
+ &Type::ZoneHandle(Z, Type::DynamicType()));
} else if (!func.is_static()) {
// Static functions do not have a receiver.
ASSERT(current_class().raw() == func.Owner());
@@ -3044,7 +3053,7 @@
params.AddFinalParameter(
TokenPos(),
&Symbols::TypeArgumentsParameter(),
- &Type::ZoneHandle(I, Type::DynamicType()));
+ &Type::ZoneHandle(Z, Type::DynamicType()));
}
ASSERT((CurrentToken() == Token::kLPAREN) ||
func.IsGetterFunction() ||
@@ -3060,7 +3069,7 @@
// * A continuation error.
//
// If the error!=null we rethrow the error at the next await.
- const Type& dynamic_type = Type::ZoneHandle(I, Type::DynamicType());
+ const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
ParamDesc result_param;
result_param.name = &Symbols::AsyncOperationParam();
result_param.default_value = &Object::null_instance();
@@ -3075,7 +3084,7 @@
params.has_optional_positional_parameters = true;
SetupDefaultsForOptionalParams(&params, default_parameter_values);
AddFormalParamsToScope(&params, current_block_->scope);
- ASSERT(AbstractType::Handle(I, func.result_type()).IsResolved());
+ ASSERT(AbstractType::Handle(Z, func.result_type()).IsResolved());
ASSERT(func.NumParameters() == params.parameters->length());
if (!Function::Handle(func.parent_function()).IsGetterFunction()) {
// Parse and discard any formal parameters. They are accessed as
@@ -3094,7 +3103,7 @@
AddFormalParamsToFunction(&params, func);
}
SetupDefaultsForOptionalParams(&params, default_parameter_values);
- ASSERT(AbstractType::Handle(I, func.result_type()).IsResolved());
+ ASSERT(AbstractType::Handle(Z, func.result_type()).IsResolved());
ASSERT(func.NumParameters() == params.parameters->length());
// Check whether the function has any field initializer formal parameters,
@@ -3130,7 +3139,7 @@
OpenBlock(); // Open a nested scope for the outermost function block.
- Function& async_closure = Function::ZoneHandle(I);
+ Function& async_closure = Function::ZoneHandle(Z);
if (func.IsAsyncFunction() && !func.is_async_closure()) {
// The code of an async function is synthesized. Disable debugging.
func.set_is_debuggable(false);
@@ -3146,8 +3155,8 @@
intptr_t end_token_pos = 0;
if (CurrentToken() == Token::kLBRACE) {
ConsumeToken();
- if (String::Handle(I, func.name()).Equals(Symbols::EqualOperator())) {
- const Class& owner = Class::Handle(I, func.Owner());
+ if (String::Handle(Z, func.name()).Equals(Symbols::EqualOperator())) {
+ const Class& owner = Class::Handle(Z, func.Owner());
if (!owner.IsObjectClass()) {
AddEqualityNullCheck();
}
@@ -3157,9 +3166,9 @@
ExpectToken(Token::kRBRACE);
} else if (CurrentToken() == Token::kARROW) {
ConsumeToken();
- if (String::Handle(I, func.name()).Equals(
+ if (String::Handle(Z, func.name()).Equals(
Symbols::EqualOperator())) {
- const Class& owner = Class::Handle(I, func.Owner());
+ const Class& owner = Class::Handle(Z, func.Owner());
if (!owner.IsObjectClass()) {
AddEqualityNullCheck();
}
@@ -3170,9 +3179,9 @@
current_block_->statements->Add(new ReturnNode(expr_pos, expr));
end_token_pos = TokenPos();
} else if (IsLiteral("native")) {
- if (String::Handle(I, func.name()).Equals(
+ if (String::Handle(Z, func.name()).Equals(
Symbols::EqualOperator())) {
- const Class& owner = Class::Handle(I, func.Owner());
+ const Class& owner = Class::Handle(Z, func.Owner());
if (!owner.IsObjectClass()) {
AddEqualityNullCheck();
}
@@ -3182,7 +3191,7 @@
ExpectSemicolon();
} else if (func.is_external()) {
// Body of an external method contains a single throw.
- const String& function_name = String::ZoneHandle(I, func.name());
+ const String& function_name = String::ZoneHandle(Z, func.name());
current_block_->statements->Add(
ThrowNoSuchMethodError(TokenPos(),
Class::Handle(func.Owner()),
@@ -3224,7 +3233,7 @@
new LoadLocalNode(Scanner::kNoSourcePos,
current_block_->scope->parent()->VariableAt(1));
LiteralNode* null_operand =
- new LiteralNode(Scanner::kNoSourcePos, Instance::ZoneHandle(I));
+ new LiteralNode(Scanner::kNoSourcePos, Instance::ZoneHandle(Z));
ComparisonNode* check_arg =
new ComparisonNode(Scanner::kNoSourcePos,
Token::kEQ_STRICT,
@@ -3312,7 +3321,7 @@
// in the library scope and return in the common case where ident is
// not a library prefix.
LibraryPrefix& prefix =
- LibraryPrefix::Handle(I, library_.LookupLocalLibraryPrefix(ident));
+ LibraryPrefix::Handle(Z, library_.LookupLocalLibraryPrefix(ident));
if (prefix.IsNull()) {
return LibraryPrefix::null();
}
@@ -3379,7 +3388,7 @@
method->params.AddFinalParameter(
formal_param_pos,
&Symbols::TypeArgumentsParameter(),
- &Type::ZoneHandle(I, Type::DynamicType()));
+ &Type::ZoneHandle(Z, Type::DynamicType()));
}
// Constructors have an implicit parameter for the construction phase.
if (method->IsConstructor()) {
@@ -3386,7 +3395,7 @@
method->params.AddFinalParameter(
TokenPos(),
&Symbols::PhaseParameter(),
- &Type::ZoneHandle(I, Type::SmiType()));
+ &Type::ZoneHandle(Z, Type::SmiType()));
}
if (are_implicitly_final) {
method->params.SetImplicitlyFinal();
@@ -3417,13 +3426,13 @@
if (method->IsGetter()) {
expected_num_parameters = (method->has_static) ? 0 : 1;
method->dict_name = method->name;
- method->name = &String::ZoneHandle(I, Field::GetterSymbol(*method->name));
+ method->name = &String::ZoneHandle(Z, Field::GetterSymbol(*method->name));
} else {
ASSERT(method->IsSetter());
expected_num_parameters = (method->has_static) ? 1 : 2;
- method->dict_name = &String::ZoneHandle(I,
+ method->dict_name = &String::ZoneHandle(Z,
String::Concat(*method->name, Symbols::Equals()));
- method->name = &String::ZoneHandle(I, Field::SetterSymbol(*method->name));
+ method->name = &String::ZoneHandle(Z, Field::SetterSymbol(*method->name));
}
if ((method->params.num_fixed_parameters != expected_num_parameters) ||
(method->params.num_optional_parameters != 0)) {
@@ -3433,8 +3442,8 @@
}
// Parse redirecting factory constructor.
- Type& redirection_type = Type::Handle(I);
- String& redirection_identifier = String::Handle(I);
+ Type& redirection_type = Type::Handle(Z);
+ String& redirection_identifier = String::Handle(Z);
bool is_redirecting = false;
if (method->IsFactory() && (CurrentToken() == Token::kASSIGN)) {
// Default parameter values are disallowed in redirecting factories.
@@ -3454,7 +3463,7 @@
const bool consume_unresolved_prefix =
(LookaheadToken(3) == Token::kLT) ||
(LookaheadToken(3) == Token::kPERIOD);
- const AbstractType& type = AbstractType::Handle(I,
+ const AbstractType& type = AbstractType::Handle(Z,
ParseType(ClassFinalizer::kResolveTypeParameters,
false, // Deferred types not allowed.
consume_unresolved_prefix));
@@ -3461,12 +3470,12 @@
if (!type.IsMalformed() && type.IsTypeParameter()) {
// Replace the type with a malformed type and compile a throw when called.
redirection_type = ClassFinalizer::NewFinalizedMalformedType(
- Error::Handle(I), // No previous error.
+ Error::Handle(Z), // No previous error.
script_,
type_pos,
"factory '%s' may not redirect to type parameter '%s'",
method->name->ToCString(),
- String::Handle(I, type.UserVisibleName()).ToCString());
+ String::Handle(Z, type.UserVisibleName()).ToCString());
} else {
// We handle malformed and malbounded redirection type at run time.
redirection_type ^= type.raw();
@@ -3499,7 +3508,7 @@
}
ConsumeToken(); // Colon.
ExpectToken(Token::kTHIS);
- String& redir_name = String::ZoneHandle(I,
+ String& redir_name = String::ZoneHandle(Z,
String::Concat(members->class_name(), Symbols::Dot()));
if (CurrentToken() == Token::kPERIOD) {
ConsumeToken();
@@ -3637,7 +3646,7 @@
} else {
function_kind = RawFunction::kRegularFunction;
}
- Function& func = Function::Handle(I,
+ Function& func = Function::Handle(Z,
Function::New(*method->name,
function_kind,
method->has_static,
@@ -3699,10 +3708,10 @@
if (!field->has_static && field->has_const) {
ReportError(field->name_pos, "instance field may not be 'const'");
}
- Function& getter = Function::Handle(I);
- Function& setter = Function::Handle(I);
- Field& class_field = Field::ZoneHandle(I);
- Instance& init_value = Instance::Handle(I);
+ Function& getter = Function::Handle(Z);
+ Function& setter = Function::Handle(Z);
+ Field& class_field = Field::ZoneHandle(Z);
+ Instance& init_value = Instance::Handle(Z);
while (true) {
bool has_initializer = CurrentToken() == Token::kASSIGN;
bool has_simple_literal = false;
@@ -3764,7 +3773,7 @@
if (field->has_static && has_initializer) {
class_field.set_value(init_value);
if (!has_simple_literal) {
- String& getter_name = String::Handle(I,
+ String& getter_name = String::Handle(Z,
Field::GetterSymbol(*field->name));
getter = Function::New(getter_name,
RawFunction::kImplicitStaticFinalGetter,
@@ -3786,7 +3795,7 @@
// For instance fields, we create implicit getter and setter methods.
if (!field->has_static) {
- String& getter_name = String::Handle(I,
+ String& getter_name = String::Handle(Z,
Field::GetterSymbol(*field->name));
getter = Function::New(getter_name, RawFunction::kImplicitGetter,
field->has_static,
@@ -3805,7 +3814,7 @@
members->AddFunction(getter);
if (!field->has_final) {
// Build a setter accessor for non-const fields.
- String& setter_name = String::Handle(I,
+ String& setter_name = String::Handle(Z,
Field::SetterSymbol(*field->name));
setter = Function::New(setter_name, RawFunction::kImplicitSetter,
field->has_static,
@@ -3821,7 +3830,7 @@
params.AddFinalParameter(TokenPos(),
&Symbols::Value(),
field->type);
- setter.set_result_type(Type::Handle(I, Type::VoidType()));
+ setter.set_result_type(Type::Handle(Z, Type::VoidType()));
setter.set_is_debuggable(false);
if (library_.is_dart_scheme() && library_.IsPrivate(*field->name)) {
setter.set_is_visible(false);
@@ -3925,7 +3934,7 @@
ConsumeToken();
member.has_var = true;
// The member type is the 'dynamic' type.
- member.type = &Type::ZoneHandle(I, Type::DynamicType());
+ member.type = &Type::ZoneHandle(Z, Type::DynamicType());
} else if (CurrentToken() == Token::kFACTORY) {
ConsumeToken();
if (member.has_static) {
@@ -3942,7 +3951,7 @@
}
ConsumeToken();
ASSERT(member.type == NULL);
- member.type = &Type::ZoneHandle(I, Type::VoidType());
+ member.type = &Type::ZoneHandle(Z, Type::VoidType());
} else if (CurrentToken() == Token::kIDENT) {
// This is either a type name or the name of a method/constructor/field.
if ((member.type == NULL) && !member.has_factory) {
@@ -3962,7 +3971,7 @@
// The declared type of fields is never ignored, even in unchecked mode,
// because getters and setters could be closurized at some time (not
// supported yet).
- member.type = &AbstractType::ZoneHandle(I,
+ member.type = &AbstractType::ZoneHandle(Z,
ParseType(ClassFinalizer::kResolveTypeParameters));
}
}
@@ -3989,16 +3998,16 @@
}
// Do not bypass class resolution by using current_class() directly, since
// it may be a patch class.
- const Object& result_type_class = Object::Handle(I,
- UnresolvedClass::New(LibraryPrefix::Handle(I),
+ const Object& result_type_class = Object::Handle(Z,
+ UnresolvedClass::New(LibraryPrefix::Handle(Z),
*member.name,
member.name_pos));
// The type arguments of the result type are the type parameters of the
// current class. Note that in the case of a patch class, they are copied
// from the class being patched.
- member.type = &Type::ZoneHandle(I, Type::New(
+ member.type = &Type::ZoneHandle(Z, Type::New(
result_type_class,
- TypeArguments::Handle(I, current_class().type_parameters()),
+ TypeArguments::Handle(Z, current_class().type_parameters()),
member.name_pos));
// We must be dealing with a constructor or named constructor.
@@ -4037,7 +4046,7 @@
// The grammar allows a return type, so member.type is not always NULL here.
// If no return type is specified, the return type of the setter is dynamic.
if (member.type == NULL) {
- member.type = &Type::ZoneHandle(I, Type::DynamicType());
+ member.type = &Type::ZoneHandle(Z, Type::DynamicType());
}
} else if ((CurrentToken() == Token::kOPERATOR) && !member.has_var &&
(LookaheadToken(1) != Token::kLPAREN) &&
@@ -4056,7 +4065,7 @@
member.kind = RawFunction::kRegularFunction;
member.name_pos = this->TokenPos();
member.name =
- &String::ZoneHandle(I, Symbols::New(Token::Str(member.operator_token)));
+ &String::ZoneHandle(Z, Symbols::New(Token::Str(member.operator_token)));
ConsumeToken();
} else if (IsIdentifier()) {
member.name = CurrentLiteral();
@@ -4070,7 +4079,7 @@
if (CurrentToken() == Token::kLPAREN || member.IsGetter()) {
// Constructor or method.
if (member.type == NULL) {
- member.type = &Type::ZoneHandle(I, Type::DynamicType());
+ member.type = &Type::ZoneHandle(Z, Type::DynamicType());
}
ASSERT(member.IsFactory() == member.has_factory);
ParseMethodOrConstructor(members, &member);
@@ -4084,7 +4093,7 @@
}
if (member.type == NULL) {
if (member.has_final) {
- member.type = &Type::ZoneHandle(I, Type::DynamicType());
+ member.type = &Type::ZoneHandle(Z, Type::DynamicType());
} else {
ReportError("missing 'var', 'final', 'const' or type"
" in field declaration");
@@ -4130,11 +4139,11 @@
}
ExpectToken(Token::kRBRACE);
- Object& obj = Object::Handle(I, library_.LookupLocalObject(*enum_name));
+ Object& obj = Object::Handle(Z, library_.LookupLocalObject(*enum_name));
if (!obj.IsNull()) {
ReportError(enum_pos, "'%s' is already defined", enum_name->ToCString());
}
- Class& cls = Class::Handle(I);
+ Class& cls = Class::Handle(Z);
cls = Class::New(*enum_name, script_, enum_pos);
cls.set_library(library_);
library_.AddClass(cls);
@@ -4143,7 +4152,7 @@
if (metadata_pos >= 0) {
library_.AddClassMetadata(cls, toplevel_class, metadata_pos);
}
- cls.set_super_type(Type::Handle(I, Type::ObjectType()));
+ cls.set_super_type(Type::Handle(Z, Type::ObjectType()));
pending_classes.Add(cls, Heap::kOld);
}
@@ -4169,9 +4178,9 @@
if (FLAG_trace_parser) {
OS::Print("TopLevel parsing class '%s'\n", class_name.ToCString());
}
- Class& cls = Class::Handle(I);
- TypeArguments& orig_type_parameters = TypeArguments::Handle(I);
- Object& obj = Object::Handle(I, library_.LookupLocalObject(class_name));
+ Class& cls = Class::Handle(Z);
+ TypeArguments& orig_type_parameters = TypeArguments::Handle(Z);
+ Object& obj = Object::Handle(Z, library_.LookupLocalObject(class_name));
if (obj.IsNull()) {
if (is_patch) {
ReportError(classname_pos, "missing class '%s' cannot be patched",
@@ -4215,7 +4224,7 @@
if (is_patch) {
// Check that the new type parameters are identical to the original ones.
const TypeArguments& new_type_parameters =
- TypeArguments::Handle(I, cls.type_parameters());
+ TypeArguments::Handle(Z, cls.type_parameters());
const int new_type_params_count =
new_type_parameters.IsNull() ? 0 : new_type_parameters.Length();
const int orig_type_params_count =
@@ -4225,12 +4234,12 @@
"class '%s' must be patched with identical type parameters",
class_name.ToCString());
}
- TypeParameter& new_type_param = TypeParameter::Handle(I);
- TypeParameter& orig_type_param = TypeParameter::Handle(I);
- String& new_name = String::Handle(I);
- String& orig_name = String::Handle(I);
- AbstractType& new_bound = AbstractType::Handle(I);
- AbstractType& orig_bound = AbstractType::Handle(I);
+ TypeParameter& new_type_param = TypeParameter::Handle(Z);
+ TypeParameter& orig_type_param = TypeParameter::Handle(Z);
+ String& new_name = String::Handle(Z);
+ String& orig_name = String::Handle(Z);
+ AbstractType& new_bound = AbstractType::Handle(Z);
+ AbstractType& orig_bound = AbstractType::Handle(Z);
for (int i = 0; i < new_type_params_count; i++) {
new_type_param ^= new_type_parameters.TypeAt(i);
orig_type_param ^= orig_type_parameters.TypeAt(i);
@@ -4273,13 +4282,13 @@
class_name.ToCString());
}
- AbstractType& super_type = Type::Handle(I);
+ AbstractType& super_type = Type::Handle(Z);
if ((CurrentToken() == Token::kEXTENDS) || is_mixin_declaration) {
ConsumeToken(); // extends or =
const intptr_t type_pos = TokenPos();
super_type = ParseType(ClassFinalizer::kResolveTypeParameters);
if (super_type.IsMalformedOrMalbounded()) {
- ReportError(Error::Handle(I, super_type.error()));
+ ReportError(Error::Handle(Z, super_type.error()));
}
if (super_type.IsDynamicType()) {
// Unlikely here, since super type is not resolved yet.
@@ -4291,7 +4300,7 @@
ReportError(type_pos,
"class '%s' may not extend type parameter '%s'",
class_name.ToCString(),
- String::Handle(I,
+ String::Handle(Z,
super_type.UserVisibleName()).ToCString());
}
// The class finalizer will check whether the super type is malbounded.
@@ -4344,7 +4353,7 @@
CompilerStats::num_classes_compiled++;
set_current_class(cls);
is_top_level_ = true;
- String& class_name = String::Handle(I, cls.Name());
+ String& class_name = String::Handle(Z, cls.Name());
const intptr_t class_pos = TokenPos();
ClassDesc members(cls, class_name, false, class_pos);
while (CurrentToken() != Token::kLBRACE) {
@@ -4367,7 +4376,7 @@
cls.AddFields(members.fields());
// Creating a new array for functions marks the class as parsed.
- const Array& array = Array::Handle(I, Array::MakeArray(members.functions()));
+ const Array& array = Array::Handle(Z, Array::MakeArray(members.functions()));
cls.SetFunctions(array);
// Add an implicit constructor if no explicit constructor is present.
@@ -4378,11 +4387,11 @@
if (cls.is_patch()) {
// Apply the changes to the patched class looked up above.
- Object& obj = Object::Handle(I, library_.LookupLocalObject(class_name));
+ Object& obj = Object::Handle(Z, library_.LookupLocalObject(class_name));
// The patched class must not be finalized yet.
const Class& orig_class = Class::Cast(obj);
ASSERT(!orig_class.is_finalized());
- Error& error = Error::Handle(I);
+ Error& error = Error::Handle(Z);
if (!orig_class.ApplyPatch(cls, &error)) {
Report::LongJumpF(error, script_, class_pos, "applying patch failed");
}
@@ -4394,12 +4403,12 @@
TRACE_PARSER("ParseEnumDefinition");
CompilerStats::num_classes_compiled++;
- const String& enum_name = String::Handle(I, cls.Name());
+ const String& enum_name = String::Handle(Z, cls.Name());
ClassDesc enum_members(cls, enum_name, false, cls.token_pos());
// Add instance field 'final int index'.
- Field& index_field = Field::ZoneHandle(I);
- const Type& int_type = Type::Handle(I, Type::IntType());
+ Field& index_field = Field::ZoneHandle(Z);
+ const Type& int_type = Type::Handle(Z, Type::IntType());
const Type& dynamic_type = Type::Handle(Type::DynamicType());
index_field = Field::New(Symbols::Index(),
false, // Not static.
@@ -4413,8 +4422,8 @@
// Add implicit getter for index field.
const String& getter_name =
- String::Handle(I, Field::GetterSymbol(Symbols::Index()));
- Function& getter = Function::Handle(I);
+ String::Handle(Z, Field::GetterSymbol(Symbols::Index()));
+ Function& getter = Function::Handle(Z);
getter = Function::New(getter_name,
RawFunction::kImplicitGetter,
/* is_static = */ false,
@@ -4431,7 +4440,7 @@
AddFormalParamsToFunction(&params, getter);
enum_members.AddFunction(getter);
- GrowableObjectArray& enum_names = GrowableObjectArray::Handle(I,
+ GrowableObjectArray& enum_names = GrowableObjectArray::Handle(Z,
GrowableObjectArray::New(8, Heap::kOld));
const String& name_prefix =
String::Handle(String::Concat(enum_name, Symbols::Dot()));
@@ -4441,8 +4450,8 @@
ConsumeToken(); // Enum type name.
ExpectToken(Token::kLBRACE);
- Field& enum_value = Field::Handle(I);
- String& enum_value_name = String::Handle(I);
+ Field& enum_value = Field::Handle(Z);
+ String& enum_value_name = String::Handle(Z);
intptr_t i = 0;
GrowableArray<String*> declared_names(8);
@@ -4485,7 +4494,7 @@
enum_members.AddField(enum_value);
// Initialize the field with the ordinal value. It will be patched
// later with the enum constant instance.
- const Smi& ordinal_value = Smi::Handle(I, Smi::New(i));
+ const Smi& ordinal_value = Smi::Handle(Z, Smi::New(i));
enum_value.set_value(ordinal_value);
enum_value.RecordStore(ordinal_value);
i++;
@@ -4506,11 +4515,11 @@
ExpectToken(Token::kRBRACE);
const Class& helper_class =
- Class::Handle(I, Library::LookupCoreClass(Symbols::_EnumHelper()));
+ Class::Handle(Z, Library::LookupCoreClass(Symbols::_EnumHelper()));
ASSERT(!helper_class.IsNull());
// Add static field 'const List values'.
- Field& values_field = Field::ZoneHandle(I);
+ Field& values_field = Field::ZoneHandle(Z);
values_field = Field::New(Symbols::Values(),
/* is_static = */ true,
/* is_final = */ true,
@@ -4518,18 +4527,18 @@
/* is_synthetic = */ false,
cls,
cls.token_pos());
- values_field.set_type(Type::Handle(I, Type::ArrayType()));
+ values_field.set_type(Type::Handle(Z, Type::ArrayType()));
enum_members.AddField(values_field);
// Allocate the immutable array containing the enumeration values.
// The actual enum instance values will be patched in later.
- const Array& values_array = Array::Handle(I, Array::New(i, Heap::kOld));
+ const Array& values_array = Array::Handle(Z, Array::New(i, Heap::kOld));
values_field.set_value(values_array);
values_field.RecordStore(values_array);
// Create a static field that contains the list of enumeration names.
// Clone the _enum_names field from the helper class.
- Field& names_field = Field::Handle(I,
+ Field& names_field = Field::Handle(Z,
helper_class.LookupStaticField(Symbols::_EnumNames()));
ASSERT(!names_field.IsNull());
names_field = names_field.Clone(cls);
@@ -4539,7 +4548,7 @@
names_field.RecordStore(names_array);
// Clone the toString() function from the helper class.
- Function& to_string_func = Function::Handle(I,
+ Function& to_string_func = Function::Handle(Z,
helper_class.LookupDynamicFunctionAllowPrivate(Symbols::toString()));
ASSERT(!to_string_func.IsNull());
to_string_func = to_string_func.Clone(cls);
@@ -4547,7 +4556,7 @@
cls.AddFields(enum_members.fields());
const Array& functions =
- Array::Handle(I, Array::MakeArray(enum_members.functions()));
+ Array::Handle(Z, Array::MakeArray(enum_members.functions()));
cls.SetFunctions(functions);
}
@@ -4555,13 +4564,13 @@
// Add an implicit constructor to the given class.
void Parser::AddImplicitConstructor(const Class& cls) {
// The implicit constructor is unnamed, has no explicit parameter.
- String& ctor_name = String::ZoneHandle(I, cls.Name());
+ String& ctor_name = String::ZoneHandle(Z, cls.Name());
ctor_name = String::Concat(ctor_name, Symbols::Dot());
ctor_name = Symbols::New(ctor_name);
// To indicate that this is an implicit constructor, we set the
// token position and end token position of the function
// to the token position of the class.
- Function& ctor = Function::Handle(I,
+ Function& ctor = Function::Handle(Z,
Function::New(ctor_name,
RawFunction::kConstructor,
/* is_static = */ false,
@@ -4584,7 +4593,7 @@
// Add implicit parameter for construction phase.
params.AddFinalParameter(cls.token_pos(),
&Symbols::PhaseParameter(),
- &Type::ZoneHandle(I, Type::SmiType()));
+ &Type::ZoneHandle(Z, Type::SmiType()));
AddFormalParamsToFunction(&params, ctor);
// The body of the constructor cannot modify the type of the constructed
@@ -4636,13 +4645,13 @@
OS::Print("toplevel parsing mixin application alias class '%s'\n",
class_name.ToCString());
}
- const Object& obj = Object::Handle(I, library_.LookupLocalObject(class_name));
+ const Object& obj = Object::Handle(Z, library_.LookupLocalObject(class_name));
if (!obj.IsNull()) {
ReportError(classname_pos, "'%s' is already defined",
class_name.ToCString());
}
const Class& mixin_application =
- Class::Handle(I, Class::New(class_name, script_, classname_pos));
+ Class::Handle(Z, Class::New(class_name, script_, classname_pos));
mixin_application.set_is_mixin_app_alias();
library_.AddClass(mixin_application);
set_current_class(mixin_application);
@@ -4657,13 +4666,13 @@
const intptr_t type_pos = TokenPos();
AbstractType& type =
- AbstractType::Handle(I,
+ AbstractType::Handle(Z,
ParseType(ClassFinalizer::kResolveTypeParameters));
if (type.IsTypeParameter()) {
ReportError(type_pos,
"class '%s' may not extend type parameter '%s'",
class_name.ToCString(),
- String::Handle(I, type.UserVisibleName()).ToCString());
+ String::Handle(Z, type.UserVisibleName()).ToCString());
}
CheckToken(Token::kWITH, "mixin application 'with Type' expected");
@@ -4741,7 +4750,7 @@
}
// Parse the result type of the function type.
- AbstractType& result_type = Type::Handle(I, Type::DynamicType());
+ AbstractType& result_type = Type::Handle(Z, Type::DynamicType());
if (CurrentToken() == Token::kVOID) {
ConsumeToken();
result_type = Type::VoidType();
@@ -4758,7 +4767,7 @@
// Lookup alias name and report an error if it is already defined in
// the library scope.
const Object& obj =
- Object::Handle(I, library_.LookupLocalObject(*alias_name));
+ Object::Handle(Z, library_.LookupLocalObject(*alias_name));
if (!obj.IsNull()) {
ReportError(alias_name_pos,
"'%s' is already defined", alias_name->ToCString());
@@ -4768,9 +4777,9 @@
// signature function after it has been parsed. The type parameters, in order
// to be properly finalized, need to be associated to this signature class as
// they are parsed.
- const Class& function_type_alias = Class::Handle(I,
+ const Class& function_type_alias = Class::Handle(Z,
Class::NewSignatureClass(*alias_name,
- Function::Handle(I),
+ Function::Handle(Z),
script_,
alias_name_pos));
library_.AddClass(function_type_alias);
@@ -4792,13 +4801,13 @@
func_params.AddFinalParameter(
TokenPos(),
&Symbols::ClosureParameter(),
- &Type::ZoneHandle(I, Type::DynamicType()));
+ &Type::ZoneHandle(Z, Type::DynamicType()));
const bool no_explicit_default_values = false;
ParseFormalParameterList(no_explicit_default_values, false, &func_params);
ExpectSemicolon();
// The field 'is_static' has no meaning for signature functions.
- Function& signature_function = Function::Handle(I,
+ Function& signature_function = Function::Handle(Z,
Function::New(*alias_name,
RawFunction::kSignatureFunction,
/* is_static = */ false,
@@ -4815,7 +4824,7 @@
// Patch the signature function in the signature class.
function_type_alias.PatchSignatureFunction(signature_function);
- const String& signature = String::Handle(I,
+ const String& signature = String::Handle(Z,
signature_function.Signature());
if (FLAG_trace_parser) {
OS::Print("TopLevel parsing function type alias '%s'\n",
@@ -4825,7 +4834,7 @@
// We only lookup in the current library, but not in its imports, and only
// create a new canonical signature class if it does not exist yet.
Class& signature_class =
- Class::ZoneHandle(I, library_.LookupLocalClass(signature));
+ Class::ZoneHandle(Z, library_.LookupLocalClass(signature));
if (signature_class.IsNull()) {
signature_class = Class::NewSignatureClass(signature,
signature_function,
@@ -4929,12 +4938,12 @@
TRACE_PARSER("ParseTypeParameters");
if (CurrentToken() == Token::kLT) {
const GrowableObjectArray& type_parameters_array =
- GrowableObjectArray::Handle(I, GrowableObjectArray::New());
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
intptr_t index = 0;
- TypeParameter& type_parameter = TypeParameter::Handle(I);
- TypeParameter& existing_type_parameter = TypeParameter::Handle(I);
- String& existing_type_parameter_name = String::Handle(I);
- AbstractType& type_parameter_bound = Type::Handle(I);
+ TypeParameter& type_parameter = TypeParameter::Handle(Z);
+ TypeParameter& existing_type_parameter = TypeParameter::Handle(Z);
+ String& existing_type_parameter_name = String::Handle(Z);
+ AbstractType& type_parameter_bound = Type::Handle(Z);
do {
ConsumeToken();
const intptr_t metadata_pos = SkipMetadata();
@@ -4978,7 +4987,7 @@
ReportError("right angle bracket expected");
}
const TypeArguments& type_parameters =
- TypeArguments::Handle(I,
+ TypeArguments::Handle(Z,
NewTypeArguments(type_parameters_array));
cls.set_type_parameters(type_parameters);
// Try to resolve the upper bounds, which will at least resolve the
@@ -5001,8 +5010,8 @@
TRACE_PARSER("ParseTypeArguments");
if (CurrentToken() == Token::kLT) {
const GrowableObjectArray& types =
- GrowableObjectArray::Handle(I, GrowableObjectArray::New());
- AbstractType& type = AbstractType::Handle(I);
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
+ AbstractType& type = AbstractType::Handle(Z);
do {
ConsumeToken();
type = ParseType(finalization);
@@ -5031,10 +5040,10 @@
TRACE_PARSER("ParseInterfaceList");
ASSERT(CurrentToken() == Token::kIMPLEMENTS);
const GrowableObjectArray& all_interfaces =
- GrowableObjectArray::Handle(I, GrowableObjectArray::New());
- AbstractType& interface = AbstractType::Handle(I);
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
+ AbstractType& interface = AbstractType::Handle(Z);
// First get all the interfaces already implemented by class.
- Array& cls_interfaces = Array::Handle(I, cls.interfaces());
+ Array& cls_interfaces = Array::Handle(Z, cls.interfaces());
for (intptr_t i = 0; i < cls_interfaces.Length(); i++) {
interface ^= cls_interfaces.At(i);
all_interfaces.Add(interface);
@@ -5047,7 +5056,7 @@
if (interface.IsTypeParameter()) {
ReportError(interface_pos,
"type parameter '%s' may not be used in interface list",
- String::Handle(I, interface.UserVisibleName()).ToCString());
+ String::Handle(Z, interface.UserVisibleName()).ToCString());
}
all_interfaces.Add(interface);
} while (CurrentToken() == Token::kCOMMA);
@@ -5060,8 +5069,8 @@
TRACE_PARSER("ParseMixins");
ASSERT(CurrentToken() == Token::kWITH);
const GrowableObjectArray& mixin_types =
- GrowableObjectArray::Handle(I, GrowableObjectArray::New());
- AbstractType& mixin_type = AbstractType::Handle(I);
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
+ AbstractType& mixin_type = AbstractType::Handle(Z);
do {
ConsumeToken();
mixin_type = ParseType(ClassFinalizer::kResolveTypeParameters);
@@ -5073,12 +5082,12 @@
if (mixin_type.IsTypeParameter()) {
ReportError(mixin_type.token_pos(),
"mixin type '%s' may not be a type parameter",
- String::Handle(I, mixin_type.UserVisibleName()).ToCString());
+ String::Handle(Z, mixin_type.UserVisibleName()).ToCString());
}
mixin_types.Add(mixin_type);
} while (CurrentToken() == Token::kCOMMA);
return MixinAppType::New(super_type,
- Array::Handle(I, Array::MakeArray(mixin_types)));
+ Array::Handle(Z, Array::MakeArray(mixin_types)));
}
@@ -5090,10 +5099,10 @@
const bool is_final = is_const || (CurrentToken() == Token::kFINAL);
const bool is_static = true;
const bool is_synthetic = false;
- const AbstractType& type = AbstractType::ZoneHandle(I,
+ const AbstractType& type = AbstractType::ZoneHandle(Z,
ParseConstFinalVarOrType(ClassFinalizer::kResolveTypeParameters));
- Field& field = Field::Handle(I);
- Function& getter = Function::Handle(I);
+ Field& field = Field::Handle(Z);
+ Function& getter = Function::Handle(Z);
while (true) {
const intptr_t name_pos = TokenPos();
String& var_name = *ExpectIdentifier("variable name expected");
@@ -5106,7 +5115,7 @@
// or final field implies a setter which throws a NoSuchMethodError,
// thus we need to check for conflicts with existing setters and
// getters.
- String& accessor_name = String::Handle(I,
+ String& accessor_name = String::Handle(Z,
Field::GetterName(var_name));
if (library_.LookupLocalObject(accessor_name) != Object::null()) {
ReportError(name_pos, "getter for '%s' is already defined",
@@ -5121,7 +5130,7 @@
field = Field::New(var_name, is_static, is_final, is_const, is_synthetic,
current_class(), name_pos);
field.set_type(type);
- field.set_value(Instance::Handle(I, Instance::null()));
+ field.set_value(Instance::Handle(Z, Instance::null()));
top_level->fields.Add(field);
library_.AddObject(field, var_name);
if (metadata_pos >= 0) {
@@ -5129,7 +5138,7 @@
}
if (CurrentToken() == Token::kASSIGN) {
ConsumeToken();
- Instance& field_value = Instance::Handle(I,
+ Instance& field_value = Instance::Handle(Z,
Object::sentinel().raw());
bool has_simple_literal = false;
if (LookaheadToken(1) == Token::kSEMICOLON) {
@@ -5139,7 +5148,7 @@
field.set_value(field_value);
if (!has_simple_literal) {
// Create a static final getter.
- String& getter_name = String::Handle(I,
+ String& getter_name = String::Handle(Z,
Field::GetterSymbol(var_name));
getter = Function::New(getter_name,
RawFunction::kImplicitStaticFinalGetter,
@@ -5189,7 +5198,7 @@
intptr_t metadata_pos) {
TRACE_PARSER("ParseTopLevelFunction");
const intptr_t decl_begin_pos = TokenPos();
- AbstractType& result_type = Type::Handle(I, Type::DynamicType());
+ AbstractType& result_type = Type::Handle(Z, Type::DynamicType());
const bool is_static = true;
bool is_external = false;
bool is_patch = false;
@@ -5223,7 +5232,7 @@
ReportError(name_pos, "missing '%s' cannot be patched",
func_name.ToCString());
}
- String& accessor_name = String::Handle(I,
+ String& accessor_name = String::Handle(Z,
Field::GetterName(func_name));
if (library_.LookupLocalObject(accessor_name) != Object::null()) {
ReportError(name_pos, "'%s' is already defined as getter",
@@ -5264,7 +5273,7 @@
} else {
ReportError("function block expected");
}
- Function& func = Function::Handle(I,
+ Function& func = Function::Handle(Z,
Function::New(func_name,
RawFunction::kRegularFunction,
is_static,
@@ -5303,7 +5312,7 @@
const bool is_static = true;
bool is_external = false;
bool is_patch = false;
- AbstractType& result_type = AbstractType::Handle(I);
+ AbstractType& result_type = AbstractType::Handle(Z);
if (is_patch_source() &&
(CurrentToken() == Token::kIDENT) &&
CurrentLiteral()->Equals("patch")) {
@@ -5342,7 +5351,7 @@
const bool allow_explicit_default_values = true;
ParseFormalParameterList(allow_explicit_default_values, false, &params);
}
- String& accessor_name = String::ZoneHandle(I);
+ String& accessor_name = String::ZoneHandle(Z);
int expected_num_parameters = -1;
if (is_getter) {
expected_num_parameters = 0;
@@ -5406,7 +5415,7 @@
} else {
ReportError("function block expected");
}
- Function& func = Function::Handle(I,
+ Function& func = Function::Handle(Z,
Function::New(accessor_name,
is_getter ? RawFunction::kGetterFunction :
RawFunction::kSetterFunction,
@@ -5463,7 +5472,7 @@
if (Dart_IsError(result)) {
// In case of an error we append an explanatory error message to the
// error obtained from the library tag handler.
- Error& prev_error = Error::Handle(I);
+ Error& prev_error = Error::Handle(Z);
prev_error ^= Api::UnwrapHandle(result);
Report::LongJumpF(prev_error, script_, token_pos, "library handler failed");
}
@@ -5529,7 +5538,7 @@
ConsumeToken();
CheckToken(Token::kAS, "'as' expected");
}
- String& prefix = String::Handle(I);
+ String& prefix = String::Handle(Z);
intptr_t prefix_pos = 0;
if (is_import && (CurrentToken() == Token::kAS)) {
ConsumeToken();
@@ -5537,13 +5546,13 @@
prefix = ExpectIdentifier("prefix identifier expected")->raw();
}
- Array& show_names = Array::Handle(I);
- Array& hide_names = Array::Handle(I);
+ Array& show_names = Array::Handle(Z);
+ Array& hide_names = Array::Handle(Z);
if (is_deferred_import || IsLiteral("show") || IsLiteral("hide")) {
GrowableObjectArray& show_list =
- GrowableObjectArray::Handle(I, GrowableObjectArray::New());
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
GrowableObjectArray& hide_list =
- GrowableObjectArray::Handle(I, GrowableObjectArray::New());
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
// Libraries imported through deferred import automatically hide
// the name 'loadLibrary'.
if (is_deferred_import) {
@@ -5574,7 +5583,7 @@
CallLibraryTagHandler(Dart_kCanonicalizeUrl, import_pos, url));
// Create a new library if it does not exist yet.
- Library& library = Library::Handle(I, Library::LookupLibrary(canon_url));
+ Library& library = Library::Handle(Z, Library::LookupLibrary(canon_url));
if (library.IsNull()) {
library = Library::New(canon_url);
library.Register();
@@ -5588,7 +5597,7 @@
CallLibraryTagHandler(Dart_kImportTag, import_pos, canon_url);
}
- Namespace& ns = Namespace::Handle(I,
+ Namespace& ns = Namespace::Handle(Z,
Namespace::New(library, show_names, hide_names));
if (metadata_pos >= 0) {
ns.AddMetadata(metadata_pos, current_class());
@@ -5597,7 +5606,7 @@
if (is_import) {
// Ensure that private dart:_ libraries are only imported into dart:
// libraries.
- const String& lib_url = String::Handle(I, library_.url());
+ const String& lib_url = String::Handle(Z, library_.url());
if (canon_url.StartsWith(Symbols::DartSchemePrivate()) &&
!lib_url.StartsWith(Symbols::DartScheme())) {
ReportError(import_pos, "private library is not accessible");
@@ -5606,7 +5615,7 @@
ASSERT(!is_deferred_import);
library_.AddImport(ns);
} else {
- LibraryPrefix& library_prefix = LibraryPrefix::Handle(I);
+ LibraryPrefix& library_prefix = LibraryPrefix::Handle(Z);
library_prefix = library_.LookupLocalLibraryPrefix(prefix);
if (!library_prefix.IsNull()) {
// Check that prefix names of deferred import clauses are
@@ -5685,9 +5694,9 @@
// Core lib has not been explicitly imported, so we implicitly
// import it here.
if (!library_.ImportsCorelib()) {
- Library& core_lib = Library::Handle(I, Library::CoreLibrary());
+ Library& core_lib = Library::Handle(Z, Library::CoreLibrary());
ASSERT(!core_lib.IsNull());
- const Namespace& core_ns = Namespace::Handle(I,
+ const Namespace& core_ns = Namespace::Handle(Z,
Namespace::New(core_lib, Object::null_array(), Object::null_array()));
library_.AddImport(core_ns);
}
@@ -5726,11 +5735,11 @@
// has been completed.
ObjectStore* object_store = I->object_store();
const GrowableObjectArray& pending_classes =
- GrowableObjectArray::Handle(I, object_store->pending_classes());
+ GrowableObjectArray::Handle(Z, object_store->pending_classes());
SetPosition(0);
is_top_level_ = true;
TopLevel top_level;
- Class& toplevel_class = Class::Handle(I,
+ Class& toplevel_class = Class::Handle(Z,
Class::New(Symbols::TopLevel(), script_, TokenPos()));
toplevel_class.set_library(library_);
@@ -5741,7 +5750,7 @@
ParsePartHeader();
}
- const Class& cls = Class::Handle(I);
+ const Class& cls = Class::Handle(Z);
while (true) {
set_current_class(cls); // No current class.
intptr_t metadata_pos = SkipMetadata();
@@ -5777,7 +5786,7 @@
if ((top_level.fields.Length() > 0) || (top_level.functions.Length() > 0)) {
toplevel_class.AddFields(top_level.fields);
- const Array& array = Array::Handle(I,
+ const Array& array = Array::Handle(Z,
Array::MakeArray(top_level.functions));
toplevel_class.SetFunctions(array);
@@ -5788,10 +5797,10 @@
void Parser::ChainNewBlock(LocalScope* outer_scope) {
- Block* block = new(I) Block(
+ Block* block = new(Z) Block(
current_block_,
outer_scope,
- new(I) SequenceNode(TokenPos(), outer_scope));
+ new(Z) SequenceNode(TokenPos(), outer_scope));
current_block_ = block;
}
@@ -5799,7 +5808,7 @@
void Parser::OpenBlock() {
ASSERT(current_block_ != NULL);
LocalScope* outer_scope = current_block_->scope;
- ChainNewBlock(new(I) LocalScope(
+ ChainNewBlock(new(Z) LocalScope(
outer_scope, outer_scope->function_level(), outer_scope->loop_level()));
}
@@ -5807,7 +5816,7 @@
void Parser::OpenLoopBlock() {
ASSERT(current_block_ != NULL);
LocalScope* outer_scope = current_block_->scope;
- ChainNewBlock(new(I) LocalScope(
+ ChainNewBlock(new(Z) LocalScope(
outer_scope,
outer_scope->function_level(),
outer_scope->loop_level() + 1));
@@ -5819,20 +5828,20 @@
if (current_block_ == NULL) {
if (!func.IsLocalFunction()) {
// We are compiling a non-nested function.
- outer_scope = new(I) LocalScope(NULL, 0, 0);
+ outer_scope = new(Z) LocalScope(NULL, 0, 0);
} else {
// We are compiling the function of an invoked closure.
// Restore the outer scope containing all captured variables.
const ContextScope& context_scope =
- ContextScope::Handle(I, func.context_scope());
+ ContextScope::Handle(Z, func.context_scope());
ASSERT(!context_scope.IsNull());
- outer_scope = new(I) LocalScope(
+ outer_scope = new(Z) LocalScope(
LocalScope::RestoreOuterScope(context_scope), 0, 0);
}
} else {
// We are parsing a nested function while compiling the enclosing function.
outer_scope =
- new(I) LocalScope(current_block_->scope,
+ new(Z) LocalScope(current_block_->scope,
current_block_->scope->function_level() + 1,
0);
}
@@ -5855,7 +5864,7 @@
OpenBlock();
OpenBlock();
const AbstractType& dynamic_type =
- AbstractType::ZoneHandle(I, Type::DynamicType());
+ AbstractType::ZoneHandle(Z, Type::DynamicType());
CatchParamDesc exception_param;
CatchParamDesc stack_trace_param;
exception_param.token_pos = Scanner::kNoSourcePos;
@@ -5877,10 +5886,10 @@
// Generate code to load the exception object (:exception_var) into
// the exception variable specified in this block.
ASSERT(exception_var != NULL);
- current_block_->statements->Add(new(I) StoreLocalNode(
+ current_block_->statements->Add(new(Z) StoreLocalNode(
Scanner::kNoSourcePos,
exception_param.var,
- new(I) LoadLocalNode(Scanner::kNoSourcePos, exception_var)));
+ new(Z) LoadLocalNode(Scanner::kNoSourcePos, exception_var)));
}
LocalVariable* stack_trace_var =
current_block_->scope->LookupVariable(Symbols::StackTraceVar(), false);
@@ -5888,15 +5897,15 @@
// A stack trace variable is specified in this block, so generate code
// to load the stack trace object (:stack_trace_var) into the stack
// trace variable specified in this block.
- ArgumentListNode* no_args = new(I) ArgumentListNode(Scanner::kNoSourcePos);
+ ArgumentListNode* no_args = new(Z) ArgumentListNode(Scanner::kNoSourcePos);
ASSERT(stack_trace_var != NULL);
- current_block_->statements->Add(new(I) StoreLocalNode(
+ current_block_->statements->Add(new(Z) StoreLocalNode(
Scanner::kNoSourcePos,
stack_trace_param.var,
- new(I) LoadLocalNode(Scanner::kNoSourcePos, stack_trace_var)));
- current_block_->statements->Add(new(I) InstanceCallNode(
+ new(Z) LoadLocalNode(Scanner::kNoSourcePos, stack_trace_var)));
+ current_block_->statements->Add(new(Z) InstanceCallNode(
Scanner::kNoSourcePos,
- new(I) LoadLocalNode(Scanner::kNoSourcePos, stack_trace_param.var),
+ new(Z) LoadLocalNode(Scanner::kNoSourcePos, stack_trace_param.var),
Library::PrivateCoreLibName(Symbols::_setupFullStackTrace()),
no_args));
}
@@ -5926,17 +5935,17 @@
Symbols::AsyncCompleter(), false);
ASSERT(async_completer != NULL);
ArgumentListNode* completer_args =
- new (I) ArgumentListNode(Scanner::kNoSourcePos);
+ new (Z) ArgumentListNode(Scanner::kNoSourcePos);
completer_args->Add(
- new (I) LoadLocalNode(Scanner::kNoSourcePos, exception_param.var));
+ new (Z) LoadLocalNode(Scanner::kNoSourcePos, exception_param.var));
completer_args->Add(
- new (I) LoadLocalNode(Scanner::kNoSourcePos, stack_trace_param.var));
- current_block_->statements->Add(new (I) InstanceCallNode(
+ new (Z) LoadLocalNode(Scanner::kNoSourcePos, stack_trace_param.var));
+ current_block_->statements->Add(new (Z) InstanceCallNode(
Scanner::kNoSourcePos,
- new (I) LoadLocalNode(Scanner::kNoSourcePos, async_completer),
+ new (Z) LoadLocalNode(Scanner::kNoSourcePos, async_completer),
Symbols::CompleterCompleteError(),
completer_args));
- ReturnNode* return_node = new (I) ReturnNode(Scanner::kNoSourcePos);
+ ReturnNode* return_node = new (Z) ReturnNode(Scanner::kNoSourcePos);
// Behavior like a continuation return, i.e,. don't call a completer.
return_node->set_return_type(ReturnNode::kContinuation);
current_block_->statements->Add(return_node);
@@ -5945,7 +5954,7 @@
SequenceNode* catch_handler_list = CloseBlock();
const GrowableObjectArray& handler_types =
- GrowableObjectArray::Handle(I, GrowableObjectArray::New());
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
handler_types.SetLength(0);
handler_types.Add(*exception_param.type);
@@ -5952,16 +5961,16 @@
TryBlocks* inner_try_block = PopTryBlock();
const intptr_t try_index = inner_try_block->try_index();
- CatchClauseNode* catch_clause = new (I) CatchClauseNode(
+ CatchClauseNode* catch_clause = new (Z) CatchClauseNode(
Scanner::kNoSourcePos,
catch_handler_list,
- Array::ZoneHandle(I, Array::MakeArray(handler_types)),
+ Array::ZoneHandle(Z, Array::MakeArray(handler_types)),
context_var,
exception_var,
stack_trace_var,
CatchClauseNode::kInvalidTryIndex,
true);
- AstNode* try_catch_node = new (I) TryCatchNode(
+ AstNode* try_catch_node = new (Z) TryCatchNode(
Scanner::kNoSourcePos,
try_block,
context_var,
@@ -5978,28 +5987,28 @@
LocalVariable* context_var =
current_block_->scope->LocalLookupVariable(Symbols::SavedTryContextVar());
if (context_var == NULL) {
- context_var = new(I) LocalVariable(
+ context_var = new(Z) LocalVariable(
TokenPos(),
Symbols::SavedTryContextVar(),
- Type::ZoneHandle(I, Type::DynamicType()));
+ Type::ZoneHandle(Z, Type::DynamicType()));
current_block_->scope->AddVariable(context_var);
}
LocalVariable* exception_var =
current_block_->scope->LocalLookupVariable(Symbols::ExceptionVar());
if (exception_var == NULL) {
- exception_var = new(I) LocalVariable(
+ exception_var = new(Z) LocalVariable(
TokenPos(),
Symbols::ExceptionVar(),
- Type::ZoneHandle(I, Type::DynamicType()));
+ Type::ZoneHandle(Z, Type::DynamicType()));
current_block_->scope->AddVariable(exception_var);
}
LocalVariable* stack_trace_var =
current_block_->scope->LocalLookupVariable(Symbols::StackTraceVar());
if (stack_trace_var == NULL) {
- stack_trace_var = new(I) LocalVariable(
+ stack_trace_var = new(Z) LocalVariable(
TokenPos(),
Symbols::StackTraceVar(),
- Type::ZoneHandle(I, Type::DynamicType()));
+ Type::ZoneHandle(Z, Type::DynamicType()));
current_block_->scope->AddVariable(stack_trace_var);
}
@@ -6017,7 +6026,7 @@
RawFunction* Parser::OpenAsyncFunction(intptr_t async_func_pos) {
TRACE_PARSER("OpenAsyncFunction");
AddAsyncClosureVariables();
- Function& closure = Function::Handle(I);
+ Function& closure = Function::Handle(Z);
bool is_new_closure = false;
// Check whether a function for the asynchronous function body of
@@ -6024,7 +6033,7 @@
// this async function has already been created by a previous
// compilation of this function.
const Function& found_func = Function::Handle(
- I, current_class().LookupClosureFunction(async_func_pos));
+ Z, current_class().LookupClosureFunction(async_func_pos));
if (!found_func.IsNull() &&
(found_func.token_pos() == async_func_pos) &&
(found_func.script() == innermost_function().script()) &&
@@ -6034,11 +6043,11 @@
} else {
// Create the closure containing the body of this async function.
const String& async_func_name =
- String::Handle(I, innermost_function().name());
- String& closure_name = String::Handle(I,
+ String::Handle(Z, innermost_function().name());
+ String& closure_name = String::Handle(Z,
String::NewFormatted("<%s_async_body>", async_func_name.ToCString()));
closure = Function::NewClosureFunction(
- String::Handle(I, Symbols::New(closure_name)),
+ String::Handle(Z, Symbols::New(closure_name)),
innermost_function(),
async_func_pos);
closure.set_is_async_closure(true);
@@ -6047,7 +6056,7 @@
}
// Create the parameter list for the async body closure.
ParamList closure_params;
- const Type& dynamic_type = Type::ZoneHandle(I, Type::DynamicType());
+ const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
closure_params.AddFinalParameter(
async_func_pos, &Symbols::ClosureParameter(), &dynamic_type);
ParamDesc result_param;
@@ -6068,8 +6077,8 @@
AddFormalParamsToFunction(&closure_params, closure);
// Create and set the signature class of the closure.
- const String& sig = String::Handle(I, closure.Signature());
- Class& sig_cls = Class::Handle(I, library_.LookupLocalClass(sig));
+ const String& sig = String::Handle(Z, closure.Signature());
+ Class& sig_cls = Class::Handle(Z, library_.LookupLocalClass(sig));
if (sig_cls.IsNull()) {
sig_cls =
Class::NewSignatureClass(sig, closure, script_, closure.token_pos());
@@ -6076,12 +6085,12 @@
library_.AddClass(sig_cls);
}
closure.set_signature_class(sig_cls);
- const Type& sig_type = Type::Handle(I, sig_cls.SignatureType());
+ const Type& sig_type = Type::Handle(Z, sig_cls.SignatureType());
if (!sig_type.IsFinalized()) {
ClassFinalizer::FinalizeType(
sig_cls, sig_type, ClassFinalizer::kCanonicalize);
}
- ASSERT(AbstractType::Handle(I, closure.result_type()).IsResolved());
+ ASSERT(AbstractType::Handle(Z, closure.result_type()).IsResolved());
ASSERT(closure.NumParameters() == closure_params.parameters->length());
}
OpenFunctionBlock(closure);
@@ -6098,23 +6107,23 @@
// var :await_ctx_var;
// var :async_op;
// var :async_completer;
- const Type& dynamic_type = Type::ZoneHandle(I, Type::DynamicType());
- LocalVariable* await_jump_var = new (I) LocalVariable(
+ const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
+ LocalVariable* await_jump_var = new (Z) LocalVariable(
Scanner::kNoSourcePos, Symbols::AwaitJumpVar(), dynamic_type);
current_block_->scope->AddVariable(await_jump_var);
current_block_->scope->CaptureVariable(Symbols::AwaitJumpVar());
await_jump_var->set_is_captured();
- LocalVariable* await_ctx_var = new (I) LocalVariable(
+ LocalVariable* await_ctx_var = new (Z) LocalVariable(
Scanner::kNoSourcePos, Symbols::AwaitContextVar(), dynamic_type);
current_block_->scope->AddVariable(await_ctx_var);
current_block_->scope->CaptureVariable(Symbols::AwaitContextVar());
await_ctx_var->set_is_captured();
- LocalVariable* async_op_var = new (I) LocalVariable(
+ LocalVariable* async_op_var = new (Z) LocalVariable(
Scanner::kNoSourcePos, Symbols::AsyncOperation(), dynamic_type);
current_block_->scope->AddVariable(async_op_var);
current_block_->scope->CaptureVariable(Symbols::AsyncOperation());
async_op_var->set_is_captured();
- LocalVariable* async_completer = new (I) LocalVariable(
+ LocalVariable* async_completer = new (Z) LocalVariable(
Scanner::kNoSourcePos, Symbols::AsyncCompleter(), dynamic_type);
current_block_->scope->AddVariable(async_completer);
current_block_->scope->CaptureVariable(Symbols::AsyncCompleter());
@@ -6135,13 +6144,13 @@
}
-static inline String& BuildAsyncSavedTryContextName(Isolate* isolate,
+static inline String& BuildAsyncSavedTryContextName(Zone* zone,
int16_t id) {
const char* async_saved_prefix = ":async_saved_try_ctx_var_";
// Can be a regular handle since we only use it to build an actual symbol.
- const String& cnt_str = String::Handle(
+ const String& cnt_str = String::Handle(zone,
String::NewFormatted("%s%d", async_saved_prefix, id));
- return String::ZoneHandle(isolate, Symbols::New(cnt_str));
+ return String::ZoneHandle(zone, Symbols::New(cnt_str));
}
@@ -6165,15 +6174,15 @@
// been captured in the corresponding scope as the body has been parsed within
// a nested block (contained in the async funtion's block).
const Class& future =
- Class::ZoneHandle(I, I->object_store()->future_class());
+ Class::ZoneHandle(Z, I->object_store()->future_class());
ASSERT(!future.IsNull());
- const Function& constructor = Function::ZoneHandle(I,
+ const Function& constructor = Function::ZoneHandle(Z,
future.LookupFunction(Symbols::FutureMicrotask()));
ASSERT(!constructor.IsNull());
const Class& completer =
- Class::ZoneHandle(I, I->object_store()->completer_class());
+ Class::ZoneHandle(Z, I->object_store()->completer_class());
ASSERT(!completer.IsNull());
- const Function& completer_constructor = Function::ZoneHandle(I,
+ const Function& completer_constructor = Function::ZoneHandle(Z,
completer.LookupFunction(Symbols::CompleterConstructor()));
ASSERT(!completer_constructor.IsNull());
@@ -6183,13 +6192,13 @@
// Add to AST:
// :async_completer = new Completer();
ArgumentListNode* empty_args =
- new (I) ArgumentListNode(Scanner::kNoSourcePos);
- ConstructorCallNode* completer_constructor_node = new (I) ConstructorCallNode(
+ new (Z) ArgumentListNode(Scanner::kNoSourcePos);
+ ConstructorCallNode* completer_constructor_node = new (Z) ConstructorCallNode(
Scanner::kNoSourcePos,
- TypeArguments::ZoneHandle(I),
+ TypeArguments::ZoneHandle(Z),
completer_constructor,
empty_args);
- StoreLocalNode* store_completer = new (I) StoreLocalNode(
+ StoreLocalNode* store_completer = new (Z) StoreLocalNode(
Scanner::kNoSourcePos,
async_completer,
completer_constructor_node);
@@ -6199,17 +6208,17 @@
LocalVariable* jump_var = current_block_->scope->LookupVariable(
Symbols::AwaitJumpVar(), false);
LiteralNode* init_value =
- new(I) LiteralNode(Scanner::kNoSourcePos, Smi::ZoneHandle(Smi::New(-1)));
+ new(Z) LiteralNode(Scanner::kNoSourcePos, Smi::ZoneHandle(Smi::New(-1)));
current_block_->statements->Add(
- new (I) StoreLocalNode(Scanner::kNoSourcePos, jump_var, init_value));
+ new (Z) StoreLocalNode(Scanner::kNoSourcePos, jump_var, init_value));
// Add to AST:
// :async_op = <closure>; (containing the original body)
LocalVariable* async_op_var = current_block_->scope->LookupVariable(
Symbols::AsyncOperation(), false);
- ClosureNode* cn = new(I) ClosureNode(
+ ClosureNode* cn = new(Z) ClosureNode(
Scanner::kNoSourcePos, closure, NULL, closure_body->scope());
- StoreLocalNode* store_async_op = new (I) StoreLocalNode(
+ StoreLocalNode* store_async_op = new (Z) StoreLocalNode(
Scanner::kNoSourcePos,
async_op_var,
cn);
@@ -6217,21 +6226,21 @@
// Add to AST:
// new Future(:async_op);
- ArgumentListNode* arguments = new (I) ArgumentListNode(Scanner::kNoSourcePos);
- arguments->Add(new (I) LoadLocalNode(
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(Scanner::kNoSourcePos);
+ arguments->Add(new (Z) LoadLocalNode(
Scanner::kNoSourcePos, async_op_var));
- ConstructorCallNode* future_node = new (I) ConstructorCallNode(
- Scanner::kNoSourcePos, TypeArguments::ZoneHandle(I), constructor,
+ ConstructorCallNode* future_node = new (Z) ConstructorCallNode(
+ Scanner::kNoSourcePos, TypeArguments::ZoneHandle(Z), constructor,
arguments);
current_block_->statements->Add(future_node);
// Add to AST:
// return :async_completer.future;
- ReturnNode* return_node = new (I) ReturnNode(
+ ReturnNode* return_node = new (Z) ReturnNode(
Scanner::kNoSourcePos,
- new (I) InstanceGetterNode(
+ new (Z) InstanceGetterNode(
Scanner::kNoSourcePos,
- new (I) LoadLocalNode(
+ new (Z) LoadLocalNode(
Scanner::kNoSourcePos,
async_completer),
Symbols::CompleterFuture()));
@@ -6317,7 +6326,7 @@
ParamDesc& param_desc = (*params->parameters)[i];
ASSERT(!is_top_level_ || param_desc.type->IsResolved());
const String* name = param_desc.name;
- LocalVariable* parameter = new(I) LocalVariable(
+ LocalVariable* parameter = new(Z) LocalVariable(
param_desc.name_pos, *name, *param_desc.type);
if (!scope->InsertParameterAt(i, parameter)) {
ReportError(param_desc.name_pos,
@@ -6340,8 +6349,8 @@
const Function& func) {
ASSERT(func.is_native());
TRACE_PARSER("ParseNativeFunctionBlock");
- const Class& cls = Class::Handle(I, func.Owner());
- const Library& library = Library::Handle(I, cls.library());
+ const Class& cls = Class::Handle(Z, func.Owner());
+ const Library& library = Library::Handle(Z, cls.library());
ASSERT(func.NumParameters() == params->parameters->length());
// Parse the function name out.
@@ -6363,11 +6372,11 @@
// Now add the NativeBodyNode and return statement.
Dart_NativeEntryResolver resolver = library.native_entry_resolver();
bool is_bootstrap_native = Bootstrap::IsBootstapResolver(resolver);
- current_block_->statements->Add(new(I) ReturnNode(
+ current_block_->statements->Add(new(Z) ReturnNode(
TokenPos(),
- new(I) NativeBodyNode(
+ new(Z) NativeBodyNode(
TokenPos(),
- Function::ZoneHandle(I, func.raw()),
+ Function::ZoneHandle(Z, func.raw()),
native_name,
native_function,
current_block_->scope,
@@ -6417,7 +6426,7 @@
if (receiver == NULL) {
ReportError(token_pos, "illegal implicit access to receiver 'this'");
}
- return new(I) LoadLocalNode(TokenPos(), receiver);
+ return new(Z) LoadLocalNode(TokenPos(), receiver);
}
@@ -6424,7 +6433,7 @@
AstNode* Parser::CallGetter(intptr_t token_pos,
AstNode* object,
const String& name) {
- return new(I) InstanceGetterNode(token_pos, object, name);
+ return new(Z) InstanceGetterNode(token_pos, object, name);
}
@@ -6437,7 +6446,7 @@
ASSERT(IsIdentifier());
const intptr_t ident_pos = TokenPos();
const String& ident = *CurrentLiteral();
- LocalVariable* variable = new(I) LocalVariable(
+ LocalVariable* variable = new(Z) LocalVariable(
ident_pos, ident, type);
ConsumeToken(); // Variable identifier.
AstNode* initialization = NULL;
@@ -6447,7 +6456,7 @@
ConsumeToken();
AstNode* expr = ParseAwaitableExpr(
is_const, kConsumeCascades, await_preamble);
- initialization = new(I) StoreLocalNode(
+ initialization = new(Z) StoreLocalNode(
assign_pos, variable, expr);
if (is_const) {
ASSERT(expr->IsLiteralNode());
@@ -6458,9 +6467,9 @@
"missing initialization of 'final' or 'const' variable");
} else {
// Initialize variable with null.
- AstNode* null_expr = new(I) LiteralNode(
- ident_pos, Instance::ZoneHandle(I));
- initialization = new(I) StoreLocalNode(
+ AstNode* null_expr = new(Z) LiteralNode(
+ ident_pos, Instance::ZoneHandle(Z));
+ initialization = new(Z) StoreLocalNode(
ident_pos, variable, null_expr);
}
@@ -6552,7 +6561,7 @@
SkipMetadata();
bool is_final = (CurrentToken() == Token::kFINAL);
bool is_const = (CurrentToken() == Token::kCONST);
- const AbstractType& type = AbstractType::ZoneHandle(I,
+ const AbstractType& type = AbstractType::ZoneHandle(Z,
ParseConstFinalVarOrType(FLAG_enable_type_checks ?
ClassFinalizer::kCanonicalize : ClassFinalizer::kIgnore));
if (!IsIdentifier()) {
@@ -6592,7 +6601,7 @@
AstNode* Parser::ParseFunctionStatement(bool is_literal) {
TRACE_PARSER("ParseFunctionStatement");
- AbstractType& result_type = AbstractType::Handle(I);
+ AbstractType& result_type = AbstractType::Handle(Z);
const String* variable_name = NULL;
const String* function_name = NULL;
@@ -6636,7 +6645,7 @@
// and register it in the current class.
// Note that we cannot share the same closure function between the closurized
// and non-closurized versions of the same parent function.
- Function& function = Function::ZoneHandle(I);
+ Function& function = Function::ZoneHandle(Z);
bool is_new_closure = false;
// TODO(hausner): There could be two different closures at the given
// function_pos, one enclosed in a closurized function and one enclosed in the
@@ -6659,7 +6668,7 @@
// passed as a function argument, or returned as a function result.
LocalVariable* function_variable = NULL;
- Type& function_type = Type::ZoneHandle(I);
+ Type& function_type = Type::ZoneHandle(Z);
if (variable_name != NULL) {
// Since the function type depends on the signature of the closure function,
// it cannot be determined before the formal parameter list of the closure
@@ -6666,15 +6675,15 @@
// function is parsed. Therefore, we set the function type to a new
// parameterized type to be patched after the actual type is known.
// We temporarily use the class of the Function interface.
- const Class& unknown_signature_class = Class::Handle(I,
- Type::Handle(I, Type::Function()).type_class());
+ const Class& unknown_signature_class = Class::Handle(Z,
+ Type::Handle(Z, Type::Function()).type_class());
function_type = Type::New(unknown_signature_class,
- TypeArguments::Handle(I), function_pos);
+ TypeArguments::Handle(Z), function_pos);
function_type.SetIsFinalized(); // No finalization needed.
// Add the function variable to the scope before parsing the function in
// order to allow self reference from inside the function.
- function_variable = new(I) LocalVariable(function_pos,
+ function_variable = new(Z) LocalVariable(function_pos,
*variable_name,
function_type);
function_variable->set_is_final();
@@ -6698,7 +6707,7 @@
}
// Parse the local function.
- Array& default_parameter_values = Array::Handle(I);
+ Array& default_parameter_values = Array::Handle(Z);
SequenceNode* statements = Parser::ParseFunc(function,
&default_parameter_values);
@@ -6705,8 +6714,8 @@
// Now that the local function has formal parameters, lookup the signature
// class in the current library (but not in its imports) and only create a new
// canonical signature class if it does not exist yet.
- const String& signature = String::Handle(I, function.Signature());
- Class& signature_class = Class::ZoneHandle(I);
+ const String& signature = String::Handle(Z, function.Signature());
+ Class& signature_class = Class::ZoneHandle(Z);
if (!is_new_closure) {
signature_class = function.signature_class();
}
@@ -6741,9 +6750,9 @@
// Since the signature type is cached by the signature class, it may have
// been finalized already.
- Type& signature_type = Type::Handle(I,
+ Type& signature_type = Type::Handle(Z,
signature_class.SignatureType());
- TypeArguments& signature_type_arguments = TypeArguments::Handle(I,
+ TypeArguments& signature_type_arguments = TypeArguments::Handle(Z,
signature_type.arguments());
if (!signature_type.IsFinalized()) {
@@ -6799,7 +6808,7 @@
// variables are not relevant for the compilation of the enclosing function.
// This pruning is done by omitting to hook the local scope in its parent
// scope in the constructor of LocalScope.
- AstNode* closure = new(I) ClosureNode(
+ AstNode* closure = new(Z) ClosureNode(
function_pos, function, NULL, statements->scope());
if (function_variable == NULL) {
@@ -6806,7 +6815,7 @@
ASSERT(is_literal);
return closure;
} else {
- AstNode* initialization = new(I) StoreLocalNode(
+ AstNode* initialization = new(Z) StoreLocalNode(
function_pos, function_variable, closure);
return initialization;
}
@@ -7215,7 +7224,7 @@
ConsumeToken();
false_branch = ParseNestedStatement(parsing_loop_body, NULL);
}
- AstNode* if_node = new(I) IfNode(
+ AstNode* if_node = new(Z) IfNode(
if_pos, cond_expr, true_branch, false_branch);
if (label != NULL) {
current_block_->statements->Add(if_node);
@@ -7287,9 +7296,9 @@
}
}
if (first_value.IsInteger()) {
- return Type::Handle(I, Type::IntType()).type_class();
+ return Type::Handle(Z, Type::IntType()).type_class();
} else if (first_value.IsString()) {
- return Type::Handle(I, Type::StringType()).type_class();
+ return Type::Handle(Z, Type::StringType()).type_class();
}
return first_value.clazz();
}
@@ -7302,7 +7311,7 @@
bool default_seen = false;
const intptr_t case_pos = TokenPos();
// The case expressions node sequence does not own the enclosing scope.
- SequenceNode* case_expressions = new(I) SequenceNode(case_pos, NULL);
+ SequenceNode* case_expressions = new(Z) SequenceNode(case_pos, NULL);
while (CurrentToken() == Token::kCASE || CurrentToken() == Token::kDEFAULT) {
if (CurrentToken() == Token::kCASE) {
if (default_seen) {
@@ -7314,9 +7323,9 @@
ASSERT(expr->IsLiteralNode());
case_expr_values->Add(expr->AsLiteralNode());
- AstNode* switch_expr_load = new(I) LoadLocalNode(
+ AstNode* switch_expr_load = new(Z) LoadLocalNode(
case_pos, switch_expr_value);
- AstNode* case_comparison = new(I) ComparisonNode(
+ AstNode* case_comparison = new(Z) ComparisonNode(
expr_pos, Token::kEQ, expr, switch_expr_load);
case_expressions->Add(case_comparison);
} else {
@@ -7350,9 +7359,9 @@
// End of this case clause. If there is a possible fall-through to
// the next case clause, throw an implicit FallThroughError.
if (!abrupt_completing_seen) {
- ArgumentListNode* arguments = new(I) ArgumentListNode(TokenPos());
- arguments->Add(new(I) LiteralNode(
- TokenPos(), Integer::ZoneHandle(I, Integer::New(TokenPos()))));
+ ArgumentListNode* arguments = new(Z) ArgumentListNode(TokenPos());
+ arguments->Add(new(Z) LiteralNode(
+ TokenPos(), Integer::ZoneHandle(Z, Integer::New(TokenPos()))));
current_block_->statements->Add(
MakeStaticCall(Symbols::FallThroughError(),
Library::PrivateCoreLibName(Symbols::ThrowNew()),
@@ -7368,7 +7377,7 @@
}
}
SequenceNode* statements = CloseBlock();
- return new(I) CaseNode(case_pos, case_label,
+ return new(Z) CaseNode(case_pos, case_label,
case_expressions, default_seen, switch_expr_value, statements);
}
@@ -7394,15 +7403,15 @@
// type of the case clause expressions. Therefore, we have to allocate
// a new type representing dynamic and can't reuse the canonical
// type object for dynamic.
- const Type& temp_var_type = Type::ZoneHandle(I,
- Type::New(Class::Handle(I, Object::dynamic_class()),
- TypeArguments::Handle(I),
+ const Type& temp_var_type = Type::ZoneHandle(Z,
+ Type::New(Class::Handle(Z, Object::dynamic_class()),
+ TypeArguments::Handle(Z),
expr_pos));
temp_var_type.SetIsFinalized();
- LocalVariable* temp_variable = new(I) LocalVariable(
+ LocalVariable* temp_variable = new(Z) LocalVariable(
expr_pos, Symbols::SwitchExpr(), temp_var_type);
current_block_->scope->AddVariable(temp_variable);
- AstNode* save_switch_expr = new(I) StoreLocalNode(
+ AstNode* save_switch_expr = new(Z) StoreLocalNode(
expr_pos, temp_variable, switch_expr);
current_block_->statements->Add(save_switch_expr);
@@ -7421,7 +7430,7 @@
case_label = current_block_->scope->LocalLookupLabel(*label_name);
if (case_label == NULL) {
// Label does not exist yet. Add it to scope of switch statement.
- case_label = new(I) SourceLabel(
+ case_label = new(Z) SourceLabel(
label_pos, *label_name, SourceLabel::kCase);
current_block_->scope->AddLabel(case_label);
} else if (case_label->kind() == SourceLabel::kForward) {
@@ -7457,7 +7466,7 @@
// variable holding the switch expression to match the type of the
// case clause constants.
temp_var_type.set_type_class(
- Class::Handle(I, CheckCaseExpressions(case_expr_values)));
+ Class::Handle(Z, CheckCaseExpressions(case_expr_values)));
// Check for unresolved label references.
SourceLabel* unresolved_label =
@@ -7469,7 +7478,7 @@
SequenceNode* switch_body = CloseBlock();
ExpectToken(Token::kRBRACE);
- return new(I) SwitchNode(switch_pos, label, switch_body);
+ return new(Z) SwitchNode(switch_pos, label, switch_body);
}
@@ -7486,7 +7495,7 @@
ExpectToken(Token::kRPAREN);
const bool parsing_loop_body = true;
SequenceNode* while_body = ParseNestedStatement(parsing_loop_body, label);
- WhileNode* while_node = new (I) WhileNode(while_pos,
+ WhileNode* while_node = new (Z) WhileNode(while_pos,
label,
cond_expr,
await_preamble,
@@ -7515,7 +7524,7 @@
}
ExpectToken(Token::kRPAREN);
ExpectSemicolon();
- return new(I) DoWhileNode(do_pos, label, cond_expr, dowhile_body);
+ return new(Z) DoWhileNode(do_pos, label, cond_expr, dowhile_body);
}
@@ -7534,7 +7543,7 @@
ReportError("Loop variable cannot be 'const'");
}
bool new_loop_var = false;
- AbstractType& loop_var_type = AbstractType::ZoneHandle(I);
+ AbstractType& loop_var_type = AbstractType::ZoneHandle(Z);
if (LookaheadToken(1) != Token::kIN) {
// Declaration of a new loop variable.
// Delay creation of the local variable until we know its actual
@@ -7559,36 +7568,36 @@
// Build creation of implicit StreamIterator.
// var :for-in-iter = new StreamIterator(stream_expr).
const Class& stream_iterator_cls =
- Class::ZoneHandle(I, I->object_store()->stream_iterator_class());
+ Class::ZoneHandle(Z, I->object_store()->stream_iterator_class());
ASSERT(!stream_iterator_cls.IsNull());
const Function& iterator_ctor =
- Function::ZoneHandle(I, stream_iterator_cls.LookupFunction(
+ Function::ZoneHandle(Z, stream_iterator_cls.LookupFunction(
Symbols::StreamIteratorConstructor()));
ASSERT(!iterator_ctor.IsNull());
- ArgumentListNode* ctor_args = new (I) ArgumentListNode(Scanner::kNoSourcePos);
+ ArgumentListNode* ctor_args = new (Z) ArgumentListNode(Scanner::kNoSourcePos);
ctor_args->Add(stream_expr);
ConstructorCallNode* ctor_call =
- new (I) ConstructorCallNode(Scanner::kNoSourcePos,
- TypeArguments::ZoneHandle(I),
+ new (Z) ConstructorCallNode(Scanner::kNoSourcePos,
+ TypeArguments::ZoneHandle(Z),
iterator_ctor,
ctor_args);
- const AbstractType& iterator_type = Type::ZoneHandle(I, Type::DynamicType());
- LocalVariable* iterator_var = new(I) LocalVariable(
+ const AbstractType& iterator_type = Type::ZoneHandle(Z, Type::DynamicType());
+ LocalVariable* iterator_var = new(Z) LocalVariable(
stream_pos, Symbols::ForInIter(), iterator_type);
current_block_->scope->AddVariable(iterator_var);
AstNode* iterator_init =
- new(I) StoreLocalNode(stream_pos, iterator_var, ctor_call);
+ new(Z) StoreLocalNode(stream_pos, iterator_var, ctor_call);
current_block_->statements->Add(iterator_init);
// Build while loop condition.
// while (await :for-in-iter.moveNext())
- ArgumentListNode* no_args = new(I) ArgumentListNode(stream_pos);
- AstNode* iterator_moveNext = new(I) InstanceCallNode(
+ ArgumentListNode* no_args = new(Z) ArgumentListNode(stream_pos);
+ AstNode* iterator_moveNext = new(Z) InstanceCallNode(
stream_pos,
- new(I) LoadLocalNode(stream_pos, iterator_var),
+ new(Z) LoadLocalNode(stream_pos, iterator_var),
Symbols::MoveNext(),
no_args);
- AstNode* await_moveNext = new (I) AwaitNode(stream_pos, iterator_moveNext);
+ AstNode* await_moveNext = new (Z) AwaitNode(stream_pos, iterator_moveNext);
OpenBlock();
AwaitTransformer at(current_block_->statements,
parsed_function(),
@@ -7606,9 +7615,9 @@
current_block_->scope->AddLabel(label);
const intptr_t loop_var_assignment_pos = TokenPos();
- AstNode* iterator_current = new(I) InstanceGetterNode(
+ AstNode* iterator_current = new(Z) InstanceGetterNode(
loop_var_assignment_pos,
- new(I) LoadLocalNode(loop_var_assignment_pos, iterator_var),
+ new(Z) LoadLocalNode(loop_var_assignment_pos, iterator_var),
Symbols::Current());
// Generate assignment of next iterator value to loop variable.
@@ -7619,7 +7628,7 @@
// Note that the variable token position needs to be inside the
// loop block, so it gets put in the loop context level.
LocalVariable* loop_var =
- new(I) LocalVariable(loop_var_assignment_pos,
+ new(Z) LocalVariable(loop_var_assignment_pos,
*loop_var_name,
loop_var_type);;
if (loop_var_is_final) {
@@ -7626,7 +7635,7 @@
loop_var->set_is_final();
}
current_block_->scope->AddVariable(loop_var);
- loop_var_assignment = new(I) StoreLocalNode(
+ loop_var_assignment = new(Z) StoreLocalNode(
loop_var_assignment_pos, loop_var, iterator_current);
} else {
AstNode* loop_var_primary =
@@ -7653,7 +7662,7 @@
}
SequenceNode* for_loop_statement = CloseBlock();
- WhileNode* while_node = new (I) WhileNode(await_for_pos,
+ WhileNode* while_node = new (Z) WhileNode(await_for_pos,
label,
transformed_await,
await_preamble,
@@ -7674,7 +7683,7 @@
const String* loop_var_name = NULL;
intptr_t loop_var_pos = 0;
bool new_loop_var = false;
- AbstractType& loop_var_type = AbstractType::ZoneHandle(I);
+ AbstractType& loop_var_type = AbstractType::ZoneHandle(Z);
if (LookaheadToken(1) == Token::kIN) {
loop_var_pos = TokenPos();
loop_var_name = ExpectIdentifier("variable name expected");
@@ -7702,23 +7711,23 @@
// would refer to the compiler generated iterator and could confuse the user.
// It is better to leave the iterator untyped and postpone the type error
// until the loop variable is assigned to.
- const AbstractType& iterator_type = Type::ZoneHandle(I, Type::DynamicType());
- LocalVariable* iterator_var = new(I) LocalVariable(
+ const AbstractType& iterator_type = Type::ZoneHandle(Z, Type::DynamicType());
+ LocalVariable* iterator_var = new(Z) LocalVariable(
collection_pos, Symbols::ForInIter(), iterator_type);
current_block_->scope->AddVariable(iterator_var);
// Generate initialization of iterator variable.
- ArgumentListNode* no_args = new(I) ArgumentListNode(collection_pos);
- AstNode* get_iterator = new(I) InstanceGetterNode(
+ ArgumentListNode* no_args = new(Z) ArgumentListNode(collection_pos);
+ AstNode* get_iterator = new(Z) InstanceGetterNode(
collection_pos, collection_expr, Symbols::GetIterator());
AstNode* iterator_init =
- new(I) StoreLocalNode(collection_pos, iterator_var, get_iterator);
+ new(Z) StoreLocalNode(collection_pos, iterator_var, get_iterator);
current_block_->statements->Add(iterator_init);
// Generate while loop condition.
- AstNode* iterator_moveNext = new(I) InstanceCallNode(
+ AstNode* iterator_moveNext = new(Z) InstanceCallNode(
collection_pos,
- new(I) LoadLocalNode(collection_pos, iterator_var),
+ new(Z) LoadLocalNode(collection_pos, iterator_var),
Symbols::MoveNext(),
no_args);
@@ -7730,9 +7739,9 @@
current_block_->scope->AddLabel(label);
const intptr_t loop_var_assignment_pos = TokenPos();
- AstNode* iterator_current = new(I) InstanceGetterNode(
+ AstNode* iterator_current = new(Z) InstanceGetterNode(
loop_var_assignment_pos,
- new(I) LoadLocalNode(loop_var_assignment_pos, iterator_var),
+ new(Z) LoadLocalNode(loop_var_assignment_pos, iterator_var),
Symbols::Current());
// Generate assignment of next iterator value to loop variable.
@@ -7741,7 +7750,7 @@
// The for loop variable is new for each iteration.
// Create a variable and add it to the loop body scope.
LocalVariable* loop_var =
- new(I) LocalVariable(loop_var_assignment_pos,
+ new(Z) LocalVariable(loop_var_assignment_pos,
*loop_var_name,
loop_var_type);;
if (loop_var_is_final) {
@@ -7748,7 +7757,7 @@
loop_var->set_is_final();
}
current_block_->scope->AddVariable(loop_var);
- loop_var_assignment = new(I) StoreLocalNode(
+ loop_var_assignment = new(Z) StoreLocalNode(
loop_var_assignment_pos, loop_var, iterator_current);
} else {
AstNode* loop_var_primary =
@@ -7776,7 +7785,7 @@
SequenceNode* for_loop_statement = CloseBlock();
- AstNode* while_statement = new(I) WhileNode(
+ AstNode* while_statement = new(Z) WhileNode(
forin_pos, label, iterator_moveNext, NULL, for_loop_statement);
current_block_->statements->Add(while_statement);
@@ -7830,8 +7839,8 @@
for (int i = 0; i < init_scope->num_variables(); i++) {
if (init_scope->VariableAt(i)->is_captured() &&
(init_scope->VariableAt(i)->owner() == init_scope)) {
- SequenceNode* incr_sequence = new(I) SequenceNode(incr_pos, NULL);
- incr_sequence->Add(new(I) CloneContextNode(for_pos));
+ SequenceNode* incr_sequence = new(Z) SequenceNode(incr_pos, NULL);
+ incr_sequence->Add(new(Z) CloneContextNode(for_pos));
if (increment != NULL) {
incr_sequence->Add(increment);
}
@@ -7839,7 +7848,7 @@
break;
}
}
- AstNode* for_node = new(I) ForNode(
+ AstNode* for_node = new(Z) ForNode(
for_pos,
label,
NodeAsSequenceNode(init_pos, initializer, NULL),
@@ -7856,24 +7865,24 @@
AstNode* Parser::MakeStaticCall(const String& cls_name,
const String& func_name,
ArgumentListNode* arguments) {
- const Class& cls = Class::Handle(I, Library::LookupCoreClass(cls_name));
+ const Class& cls = Class::Handle(Z, Library::LookupCoreClass(cls_name));
ASSERT(!cls.IsNull());
- const Function& func = Function::ZoneHandle(I,
+ const Function& func = Function::ZoneHandle(Z,
Resolver::ResolveStatic(cls,
func_name,
arguments->length(),
arguments->names()));
ASSERT(!func.IsNull());
- return new(I) StaticCallNode(arguments->token_pos(), func, arguments);
+ return new(Z) StaticCallNode(arguments->token_pos(), func, arguments);
}
AstNode* Parser::MakeAssertCall(intptr_t begin, intptr_t end) {
- ArgumentListNode* arguments = new(I) ArgumentListNode(begin);
- arguments->Add(new(I) LiteralNode(begin,
- Integer::ZoneHandle(I, Integer::New(begin))));
- arguments->Add(new(I) LiteralNode(end,
- Integer::ZoneHandle(I, Integer::New(end))));
+ ArgumentListNode* arguments = new(Z) ArgumentListNode(begin);
+ arguments->Add(new(Z) LiteralNode(begin,
+ Integer::ZoneHandle(Z, Integer::New(begin))));
+ arguments->Add(new(Z) LiteralNode(end,
+ Integer::ZoneHandle(Z, Integer::New(end))));
return MakeStaticCall(Symbols::AssertionError(),
Library::PrivateCoreLibName(Symbols::ThrowNew()),
arguments);
@@ -7888,7 +7897,7 @@
const intptr_t pos = condition->token_pos();
condition = BuildClosureCall(pos,
condition,
- new(I) ArgumentListNode(pos));
+ new(Z) ArgumentListNode(pos));
} else if (condition->IsConditionalExprNode()) {
ConditionalExprNode* cond_expr = condition->AsConditionalExprNode();
cond_expr->set_true_expr(InsertClosureCallNodes(cond_expr->true_expr()));
@@ -7912,9 +7921,9 @@
const intptr_t condition_end = TokenPos();
ExpectToken(Token::kRPAREN);
condition = InsertClosureCallNodes(condition);
- condition = new(I) UnaryOpNode(condition_pos, Token::kNOT, condition);
+ condition = new(Z) UnaryOpNode(condition_pos, Token::kNOT, condition);
AstNode* assert_throw = MakeAssertCall(condition_pos, condition_end);
- return new(I) IfNode(
+ return new(Z) IfNode(
condition_pos,
condition,
NodeAsSequenceNode(condition_pos, assert_throw, NULL),
@@ -7927,7 +7936,7 @@
CatchParamDesc* stack_trace_param,
LocalScope* scope) {
if (exception_param->name != NULL) {
- LocalVariable* var = new(I) LocalVariable(
+ LocalVariable* var = new(Z) LocalVariable(
exception_param->token_pos,
*exception_param->name,
*exception_param->type);
@@ -7937,7 +7946,7 @@
exception_param->var = var;
}
if (stack_trace_param->name != NULL) {
- LocalVariable* var = new(I) LocalVariable(
+ LocalVariable* var = new(Z) LocalVariable(
stack_trace_param->token_pos,
*stack_trace_param->name,
*stack_trace_param->type);
@@ -7981,7 +7990,7 @@
void Parser::PushTryBlock(Block* try_block) {
intptr_t try_index = AllocateTryIndex();
- TryBlocks* block = new(I) TryBlocks(
+ TryBlocks* block = new(Z) TryBlocks(
try_block, try_blocks_list_, try_index);
try_blocks_list_ = block;
}
@@ -8059,10 +8068,10 @@
CatchParamDesc stack_trace_param;
if (IsLiteral("on")) {
ConsumeToken();
- exception_param.type = &AbstractType::ZoneHandle(I,
+ exception_param.type = &AbstractType::ZoneHandle(Z,
ParseType(ClassFinalizer::kCanonicalize));
} else {
- exception_param.type = &AbstractType::ZoneHandle(I, Type::DynamicType());
+ exception_param.type = &AbstractType::ZoneHandle(Z, Type::DynamicType());
}
if (CurrentToken() == Token::kCATCH) {
ConsumeToken(); // Consume the 'catch'.
@@ -8073,7 +8082,7 @@
ConsumeToken();
// TODO(hausner): Make implicit type be StackTrace, not dynamic.
stack_trace_param.type =
- &AbstractType::ZoneHandle(I, Type::DynamicType());
+ &AbstractType::ZoneHandle(Z, Type::DynamicType());
stack_trace_param.token_pos = TokenPos();
stack_trace_param.name = ExpectIdentifier("identifier expected");
}
@@ -8093,8 +8102,8 @@
// Generate code to load the exception object (:exception_var) into
// the exception variable specified in this block.
ASSERT(exception_var != NULL);
- current_block_->statements->Add(new(I) StoreLocalNode(
- catch_pos, exception_param.var, new(I) LoadLocalNode(
+ current_block_->statements->Add(new(Z) StoreLocalNode(
+ catch_pos, exception_param.var, new(Z) LoadLocalNode(
catch_pos, exception_var)));
}
if (stack_trace_param.var != NULL) {
@@ -8102,14 +8111,14 @@
// to load the stack trace object (:stack_trace_var) into the stack
// trace variable specified in this block.
*needs_stack_trace = true;
- ArgumentListNode* no_args = new(I) ArgumentListNode(catch_pos);
+ ArgumentListNode* no_args = new(Z) ArgumentListNode(catch_pos);
ASSERT(stack_trace_var != NULL);
- current_block_->statements->Add(new(I) StoreLocalNode(
- catch_pos, stack_trace_param.var, new(I) LoadLocalNode(
+ current_block_->statements->Add(new(Z) StoreLocalNode(
+ catch_pos, stack_trace_param.var, new(Z) LoadLocalNode(
catch_pos, stack_trace_var)));
- current_block_->statements->Add(new(I) InstanceCallNode(
+ current_block_->statements->Add(new(Z) InstanceCallNode(
catch_pos,
- new(I) LoadLocalNode(catch_pos, stack_trace_param.var),
+ new(Z) LoadLocalNode(catch_pos, stack_trace_param.var),
Library::PrivateCoreLibName(Symbols::_setupFullStackTrace()),
no_args));
}
@@ -8149,10 +8158,10 @@
// In the first case, unconditionally execute the catch body. In the
// second case, unconditionally throw.
generic_catch_seen = true;
- type_tests.Add(new(I) LiteralNode(catch_pos, Bool::True()));
+ type_tests.Add(new(Z) LiteralNode(catch_pos, Bool::True()));
if (is_bad_type) {
// Replace the body with one that throws.
- SequenceNode* block = new(I) SequenceNode(catch_pos, NULL);
+ SequenceNode* block = new(Z) SequenceNode(catch_pos, NULL);
block->Add(ThrowTypeError(catch_pos, *exception_param.type));
catch_blocks.Last() = block;
}
@@ -8168,14 +8177,14 @@
// Make sure that the instantiator is captured.
CaptureInstantiator();
}
- TypeNode* exception_type = new(I) TypeNode(
+ TypeNode* exception_type = new(Z) TypeNode(
catch_pos, *exception_param.type);
- AstNode* exception_value = new(I) LoadLocalNode(
+ AstNode* exception_value = new(Z) LoadLocalNode(
catch_pos, exception_var);
if (!exception_type->type().IsInstantiated()) {
EnsureExpressionTemp();
}
- type_tests.Add(new(I) ComparisonNode(
+ type_tests.Add(new(Z) ComparisonNode(
catch_pos, Token::kIS, exception_value, exception_type));
// Do not add uninstantiated types (e.g. type parameter T or generic
@@ -8203,11 +8212,11 @@
// There isn't a generic catch clause so create a clause body that
// rethrows the exception. This includes the case that there were no
// catch clauses.
- current = new(I) SequenceNode(handler_pos, NULL);
- current->Add(new(I) ThrowNode(
+ current = new(Z) SequenceNode(handler_pos, NULL);
+ current->Add(new(Z) ThrowNode(
handler_pos,
- new(I) LoadLocalNode(handler_pos, exception_var),
- new(I) LoadLocalNode(handler_pos, stack_trace_var)));
+ new(Z) LoadLocalNode(handler_pos, exception_var),
+ new(Z) LoadLocalNode(handler_pos, stack_trace_var)));
} else if (type_tests.Last()->IsLiteralNode()) {
ASSERT(type_tests.Last()->AsLiteralNode()->literal().raw() ==
Bool::True().raw());
@@ -8246,7 +8255,7 @@
}
}
- current_block_->statements->Add(new(I) IfNode(
+ current_block_->statements->Add(new(Z) IfNode(
type_test->token_pos(), type_test, catch_block, current));
current = CloseBlock();
}
@@ -8256,11 +8265,11 @@
void Parser::SetupSavedTryContext(LocalVariable* saved_try_context) {
const String& async_saved_try_ctx_name =
- BuildAsyncSavedTryContextName(I, last_used_try_index_ - 1);
- LocalVariable* async_saved_try_ctx = new (I) LocalVariable(
+ BuildAsyncSavedTryContextName(Z, last_used_try_index_ - 1);
+ LocalVariable* async_saved_try_ctx = new (Z) LocalVariable(
Scanner::kNoSourcePos,
async_saved_try_ctx_name,
- Type::ZoneHandle(I, Type::DynamicType()));
+ Type::ZoneHandle(Z, Type::DynamicType()));
async_temp_scope_->AddVariable(async_saved_try_ctx);
async_saved_try_ctx->set_is_captured();
async_saved_try_ctx = current_block_->scope->LookupVariable(
@@ -8267,8 +8276,8 @@
async_saved_try_ctx_name, false);
ASSERT(async_saved_try_ctx != NULL);
ASSERT(saved_try_context != NULL);
- current_block_->statements->Add(new (I) StoreLocalNode(
- Scanner::kNoSourcePos, async_saved_try_ctx, new (I) LoadLocalNode(
+ current_block_->statements->Add(new (Z) StoreLocalNode(
+ Scanner::kNoSourcePos, async_saved_try_ctx, new (Z) LoadLocalNode(
Scanner::kNoSourcePos, saved_try_context)));
parsed_function()->set_saved_try_ctx(saved_try_context);
parsed_function()->set_async_saved_try_ctx_name(async_saved_try_ctx_name);
@@ -8289,15 +8298,15 @@
Symbols::SavedTryContextVar(), false);
ASSERT((saved_try_ctx != NULL) && !saved_try_ctx->is_captured());
const String& async_saved_try_ctx_name =
- BuildAsyncSavedTryContextName(I, try_index);
+ BuildAsyncSavedTryContextName(Z, try_index);
LocalVariable* async_saved_try_ctx =
target->scope()->LookupVariable(async_saved_try_ctx_name, false);
ASSERT(async_saved_try_ctx != NULL);
ASSERT(async_saved_try_ctx->is_captured());
- target->Add(new (I) StoreLocalNode(
+ target->Add(new (Z) StoreLocalNode(
Scanner::kNoSourcePos,
saved_try_ctx,
- new (I) LoadLocalNode(Scanner::kNoSourcePos, async_saved_try_ctx)));
+ new (Z) LoadLocalNode(Scanner::kNoSourcePos, async_saved_try_ctx)));
parsed_function()->set_saved_try_ctx(saved_try_ctx);
parsed_function()->set_async_saved_try_ctx_name(async_saved_try_ctx_name);
@@ -8323,28 +8332,28 @@
LocalVariable* context_var =
current_block_->scope->LocalLookupVariable(Symbols::SavedTryContextVar());
if (context_var == NULL) {
- context_var = new(I) LocalVariable(
+ context_var = new(Z) LocalVariable(
TokenPos(),
Symbols::SavedTryContextVar(),
- Type::ZoneHandle(I, Type::DynamicType()));
+ Type::ZoneHandle(Z, Type::DynamicType()));
current_block_->scope->AddVariable(context_var);
}
LocalVariable* exception_var =
current_block_->scope->LocalLookupVariable(Symbols::ExceptionVar());
if (exception_var == NULL) {
- exception_var = new(I) LocalVariable(
+ exception_var = new(Z) LocalVariable(
TokenPos(),
Symbols::ExceptionVar(),
- Type::ZoneHandle(I, Type::DynamicType()));
+ Type::ZoneHandle(Z, Type::DynamicType()));
current_block_->scope->AddVariable(exception_var);
}
LocalVariable* stack_trace_var =
current_block_->scope->LocalLookupVariable(Symbols::StackTraceVar());
if (stack_trace_var == NULL) {
- stack_trace_var = new(I) LocalVariable(
+ stack_trace_var = new(Z) LocalVariable(
TokenPos(),
Symbols::StackTraceVar(),
- Type::ZoneHandle(I, Type::DynamicType()));
+ Type::ZoneHandle(Z, Type::DynamicType()));
current_block_->scope->AddVariable(stack_trace_var);
}
@@ -8381,7 +8390,7 @@
try_blocks_list_->enter_catch();
const intptr_t handler_pos = TokenPos();
const GrowableObjectArray& handler_types =
- GrowableObjectArray::Handle(I, GrowableObjectArray::New());
+ GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
bool needs_stack_trace = false;
SequenceNode* catch_handler_list =
ParseCatchClauses(handler_pos, exception_var, stack_trace_var,
@@ -8405,7 +8414,7 @@
inner_try_block->GetNodeToInlineFinally(node_index);
while (node_to_inline != NULL) {
finally_block = ParseFinallyBlock();
- InlinedFinallyNode* node = new(I) InlinedFinallyNode(finally_pos,
+ InlinedFinallyNode* node = new(Z) InlinedFinallyNode(finally_pos,
finally_block,
context_var,
outer_try_index);
@@ -8417,10 +8426,10 @@
finally_block = ParseFinallyBlock();
}
- CatchClauseNode* catch_clause = new(I) CatchClauseNode(
+ CatchClauseNode* catch_clause = new(Z) CatchClauseNode(
handler_pos,
catch_handler_list,
- Array::ZoneHandle(I, Array::MakeArray(handler_types)),
+ Array::ZoneHandle(Z, Array::MakeArray(handler_types)),
context_var,
exception_var,
stack_trace_var,
@@ -8431,7 +8440,7 @@
// Now create the try/catch ast node and return it. If there is a label
// on the try/catch, close the block that's embedding the try statement
// and attach the label to it.
- AstNode* try_catch_node = new(I) TryCatchNode(
+ AstNode* try_catch_node = new(Z) TryCatchNode(
try_pos, try_block, context_var, catch_clause, finally_block, try_index);
if (try_label != NULL) {
@@ -8474,7 +8483,7 @@
LocalScope* switch_scope = current_block_->scope->LookupSwitchScope();
if (switch_scope != NULL) {
// We found a switch scope. Enter a forward reference to the label.
- target = new(I) SourceLabel(
+ target = new(Z) SourceLabel(
TokenPos(), target_name, SourceLabel::kForward);
switch_scope->AddLabel(target);
}
@@ -8504,7 +8513,7 @@
ReportError(jump_pos, "'%s' target must be in same function context",
Token::Str(jump_kind));
}
- return new(I) JumpNode(jump_pos, jump_kind, target);
+ return new(Z) JumpNode(jump_pos, jump_kind, target);
}
@@ -8548,9 +8557,9 @@
"return of a value not allowed in constructors");
}
AstNode* expr = ParseAwaitableExpr(kAllowConst, kConsumeCascades, NULL);
- statement = new(I) ReturnNode(statement_pos, expr);
+ statement = new(Z) ReturnNode(statement_pos, expr);
} else {
- statement = new(I) ReturnNode(statement_pos);
+ statement = new(Z) ReturnNode(statement_pos);
}
AddNodeForFinallyInlining(statement);
ExpectSemicolon();
@@ -8607,10 +8616,10 @@
LocalVariable* trace_var =
scope->LocalLookupVariable(Symbols::StackTraceVar());
ASSERT(trace_var != NULL);
- statement = new(I) ThrowNode(
+ statement = new(Z) ThrowNode(
statement_pos,
- new(I) LoadLocalNode(statement_pos, excp_var),
- new(I) LoadLocalNode(statement_pos, trace_var));
+ new(Z) LoadLocalNode(statement_pos, excp_var),
+ new(Z) LoadLocalNode(statement_pos, trace_var));
} else {
statement = ParseAwaitableExpr(kAllowConst, kConsumeCascades, NULL);
ExpectSemicolon();
@@ -8766,20 +8775,20 @@
AstNode* Parser::ThrowTypeError(intptr_t type_pos, const AbstractType& type) {
- ArgumentListNode* arguments = new(I) ArgumentListNode(type_pos);
+ ArgumentListNode* arguments = new(Z) ArgumentListNode(type_pos);
// Location argument.
- arguments->Add(new(I) LiteralNode(
- type_pos, Integer::ZoneHandle(I, Integer::New(type_pos))));
+ arguments->Add(new(Z) LiteralNode(
+ type_pos, Integer::ZoneHandle(Z, Integer::New(type_pos))));
// Src value argument.
- arguments->Add(new(I) LiteralNode(type_pos, Instance::ZoneHandle(I)));
+ arguments->Add(new(Z) LiteralNode(type_pos, Instance::ZoneHandle(Z)));
// Dst type name argument.
- arguments->Add(new(I) LiteralNode(type_pos, Symbols::Malformed()));
+ arguments->Add(new(Z) LiteralNode(type_pos, Symbols::Malformed()));
// Dst name argument.
- arguments->Add(new(I) LiteralNode(type_pos, Symbols::Empty()));
+ arguments->Add(new(Z) LiteralNode(type_pos, Symbols::Empty()));
// Malformed type error or malbounded type error.
- const Error& error = Error::Handle(I, type.error());
+ const Error& error = Error::Handle(Z, type.error());
ASSERT(!error.IsNull());
- arguments->Add(new(I) LiteralNode(type_pos, String::ZoneHandle(I,
+ arguments->Add(new(Z) LiteralNode(type_pos, String::ZoneHandle(Z,
Symbols::New(error.ToErrorCString()))));
return MakeStaticCall(Symbols::TypeError(),
Library::PrivateCoreLibName(Symbols::ThrowNew()),
@@ -8794,7 +8803,7 @@
InvocationMirror::Call im_call,
InvocationMirror::Type im_type,
const Function* func) {
- ArgumentListNode* arguments = new(I) ArgumentListNode(call_pos);
+ ArgumentListNode* arguments = new(Z) ArgumentListNode(call_pos);
// Object receiver.
// If the function is external and dynamic, pass the actual receiver,
// otherwise, pass a class literal of the unresolved method's owner.
@@ -8802,15 +8811,15 @@
func->is_external() && !func->is_static()) {
arguments->Add(LoadReceiver(func->token_pos()));
} else {
- Type& type = Type::ZoneHandle(I,
- Type::New(cls, TypeArguments::Handle(I), call_pos, Heap::kOld));
+ Type& type = Type::ZoneHandle(Z,
+ Type::New(cls, TypeArguments::Handle(Z), call_pos, Heap::kOld));
type ^= ClassFinalizer::FinalizeType(
current_class(), type, ClassFinalizer::kCanonicalize);
- arguments->Add(new(I) LiteralNode(call_pos, type));
+ arguments->Add(new(Z) LiteralNode(call_pos, type));
}
// String memberName.
- arguments->Add(new(I) LiteralNode(
- call_pos, String::ZoneHandle(I, Symbols::New(function_name))));
+ arguments->Add(new(Z) LiteralNode(
+ call_pos, String::ZoneHandle(Z, Symbols::New(function_name))));
// Smi invocation_type.
if (cls.IsTopLevel()) {
ASSERT(im_call == InvocationMirror::kStatic ||
@@ -8817,23 +8826,23 @@
im_call == InvocationMirror::kTopLevel);
im_call = InvocationMirror::kTopLevel;
}
- arguments->Add(new(I) LiteralNode(call_pos, Smi::ZoneHandle(I,
+ arguments->Add(new(Z) LiteralNode(call_pos, Smi::ZoneHandle(Z,
Smi::New(InvocationMirror::EncodeType(im_call, im_type)))));
// List arguments.
if (function_arguments == NULL) {
- arguments->Add(new(I) LiteralNode(call_pos, Array::ZoneHandle(I)));
+ arguments->Add(new(Z) LiteralNode(call_pos, Array::ZoneHandle(Z)));
} else {
- ArrayNode* array = new(I) ArrayNode(
+ ArrayNode* array = new(Z) ArrayNode(
call_pos,
- Type::ZoneHandle(I, Type::ArrayType()),
+ Type::ZoneHandle(Z, Type::ArrayType()),
function_arguments->nodes());
arguments->Add(array);
}
// List argumentNames.
if (function_arguments == NULL) {
- arguments->Add(new(I) LiteralNode(call_pos, Array::ZoneHandle(I)));
+ arguments->Add(new(Z) LiteralNode(call_pos, Array::ZoneHandle(Z)));
} else {
- arguments->Add(new(I) LiteralNode(call_pos, function_arguments->names()));
+ arguments->Add(new(Z) LiteralNode(call_pos, function_arguments->names()));
}
// List existingArgumentNames.
@@ -8841,13 +8850,13 @@
// has done the lookup already. If there is a function with the same
// name but incompatible parameters, inform the NoSuchMethodError what the
// expected parameters are.
- Function& function = Function::Handle(I);
+ Function& function = Function::Handle(Z);
if (func != NULL) {
function = func->raw();
} else {
function = cls.LookupStaticFunction(function_name);
}
- Array& array = Array::ZoneHandle(I);
+ Array& array = Array::ZoneHandle(Z);
// An unpatched external function is treated as an unresolved function.
if (!function.IsNull() && !function.is_external()) {
// The constructor for NoSuchMethodError takes a list of existing
@@ -8863,9 +8872,9 @@
// between dart2js and VM. Update the constructor to accept a string
// describing the formal parameters of an incompatible call target.
array = Array::New(1, Heap::kOld);
- array.SetAt(0, String::Handle(I, function.UserVisibleFormalParameters()));
+ array.SetAt(0, String::Handle(Z, function.UserVisibleFormalParameters()));
}
- arguments->Add(new(I) LiteralNode(call_pos, array));
+ arguments->Add(new(Z) LiteralNode(call_pos, array));
return MakeStaticCall(Symbols::NoSuchMethodError(),
Library::PrivateCoreLibName(Symbols::ThrowNew()),
@@ -8897,7 +8906,7 @@
op_kind = Token::kISNOT;
}
const intptr_t type_pos = TokenPos();
- const AbstractType& type = AbstractType::ZoneHandle(I,
+ const AbstractType& type = AbstractType::ZoneHandle(Z,
ParseType(ClassFinalizer::kCanonicalize));
if (!type.IsInstantiated() &&
(current_block_->scope->function_level() > 0)) {
@@ -8904,7 +8913,7 @@
// Make sure that the instantiator is captured.
CaptureInstantiator();
}
- right_operand = new(I) TypeNode(type_pos, type);
+ right_operand = new(Z) TypeNode(type_pos, type);
// In production mode, the type may be malformed.
// In checked mode, the type may be malformed or malbounded.
if (((op_kind == Token::kIS) || (op_kind == Token::kISNOT) ||
@@ -8914,7 +8923,7 @@
// a type cast even if the tested value is null.
// We need to evaluate the left operand for potential
// side effects.
- LetNode* let = new(I) LetNode(left_operand->token_pos());
+ LetNode* let = new(Z) LetNode(left_operand->token_pos());
let->AddNode(left_operand);
let->AddNode(ThrowTypeError(type_pos, type));
left_operand = let;
@@ -8931,7 +8940,7 @@
EnsureExpressionTemp();
}
}
- left_operand = new(I) ComparisonNode(
+ left_operand = new(Z) ComparisonNode(
op_pos, op_kind, left_operand, right_operand);
break; // Equality and relational operators cannot be chained.
} else {
@@ -8956,7 +8965,7 @@
}
if (CurrentToken() == Token::kCOMMA) {
// Collect comma-separated expressions in a non scope owning sequence node.
- SequenceNode* list = new(I) SequenceNode(TokenPos(), NULL);
+ SequenceNode* list = new(Z) SequenceNode(TokenPos(), NULL);
list->Add(expressions);
while (CurrentToken() == Token::kCOMMA) {
ConsumeToken();
@@ -8984,10 +8993,10 @@
const char* s) {
char name[64];
OS::SNPrint(name, 64, ":%s%" Pd, s, token_pos);
- LocalVariable* temp = new(I) LocalVariable(
+ LocalVariable* temp = new(Z) LocalVariable(
token_pos,
- String::ZoneHandle(I, Symbols::New(name)),
- Type::ZoneHandle(I, Type::DynamicType()));
+ String::ZoneHandle(Z, Symbols::New(name)),
+ Type::ZoneHandle(Z, Type::DynamicType()));
temp->set_is_final();
current_block_->scope->AddVariable(temp);
return temp;
@@ -9007,9 +9016,9 @@
double left_double = Double::Cast(lhs_literal->literal()).value();
double right_double = Double::Cast(rhs_literal->literal()).value();
if (binary_op == Token::kDIV) {
- const Double& dbl_obj = Double::ZoneHandle(I,
+ const Double& dbl_obj = Double::ZoneHandle(Z,
Double::NewCanonical((left_double / right_double)));
- return new(I) LiteralNode(op_pos, dbl_obj);
+ return new(Z) LiteralNode(op_pos, dbl_obj);
}
}
}
@@ -9032,7 +9041,7 @@
(lhs->AsBinaryOpNode()->kind() == Token::kSHL)) {
// Merge SHL and BIT_AND into one "SHL with mask" node.
BinaryOpNode* old = lhs->AsBinaryOpNode();
- BinaryOpWithMask32Node* binop = new(I) BinaryOpWithMask32Node(
+ BinaryOpWithMask32Node* binop = new(Z) BinaryOpWithMask32Node(
old->token_pos(), old->kind(), old->left(), old->right(), val);
return binop;
}
@@ -9039,7 +9048,7 @@
}
}
}
- return new(I) BinaryOpNode(op_pos, binary_op, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, binary_op, lhs, rhs);
}
@@ -9052,27 +9061,27 @@
case Token::kASSIGN:
return rhs;
case Token::kASSIGN_ADD:
- return new(I) BinaryOpNode(op_pos, Token::kADD, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kADD, lhs, rhs);
case Token::kASSIGN_SUB:
- return new(I) BinaryOpNode(op_pos, Token::kSUB, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kSUB, lhs, rhs);
case Token::kASSIGN_MUL:
- return new(I) BinaryOpNode(op_pos, Token::kMUL, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kMUL, lhs, rhs);
case Token::kASSIGN_TRUNCDIV:
- return new(I) BinaryOpNode(op_pos, Token::kTRUNCDIV, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kTRUNCDIV, lhs, rhs);
case Token::kASSIGN_DIV:
- return new(I) BinaryOpNode(op_pos, Token::kDIV, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kDIV, lhs, rhs);
case Token::kASSIGN_MOD:
- return new(I) BinaryOpNode(op_pos, Token::kMOD, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kMOD, lhs, rhs);
case Token::kASSIGN_SHR:
- return new(I) BinaryOpNode(op_pos, Token::kSHR, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kSHR, lhs, rhs);
case Token::kASSIGN_SHL:
- return new(I) BinaryOpNode(op_pos, Token::kSHL, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kSHL, lhs, rhs);
case Token::kASSIGN_OR:
- return new(I) BinaryOpNode(op_pos, Token::kBIT_OR, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kBIT_OR, lhs, rhs);
case Token::kASSIGN_AND:
- return new(I) BinaryOpNode(op_pos, Token::kBIT_AND, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kBIT_AND, lhs, rhs);
case Token::kASSIGN_XOR:
- return new(I) BinaryOpNode(op_pos, Token::kBIT_XOR, lhs, rhs);
+ return new(Z) BinaryOpNode(op_pos, Token::kBIT_XOR, lhs, rhs);
default:
ReportError(op_pos,
"internal error: ExpandAssignableOp '%s' unimplemented",
@@ -9092,7 +9101,7 @@
if (expr->EvalConstExpr() == NULL) {
ReportError(expr_pos, "expression is not a valid compile-time constant");
}
- return new(I) LiteralNode(
+ return new(Z) LiteralNode(
expr_pos, EvaluateConstExpr(expr_pos, expr));
}
@@ -9100,7 +9109,7 @@
LetNode* Parser::PrepareCompoundAssignmentNodes(AstNode** expr) {
AstNode* node = *expr;
intptr_t token_pos = node->token_pos();
- LetNode* result = new(I) LetNode(token_pos);
+ LetNode* result = new(Z) LetNode(token_pos);
if (node->IsLoadIndexedNode()) {
LoadIndexedNode* load_indexed = node->AsLoadIndexedNode();
AstNode* array = load_indexed->array();
@@ -9107,14 +9116,14 @@
AstNode* index = load_indexed->index_expr();
if (!IsSimpleLocalOrLiteralNode(load_indexed->array())) {
LocalVariable* t0 = result->AddInitializer(load_indexed->array());
- array = new(I) LoadLocalNode(token_pos, t0);
+ array = new(Z) LoadLocalNode(token_pos, t0);
}
if (!IsSimpleLocalOrLiteralNode(load_indexed->index_expr())) {
LocalVariable* t1 = result->AddInitializer(
load_indexed->index_expr());
- index = new(I) LoadLocalNode(token_pos, t1);
+ index = new(Z) LoadLocalNode(token_pos, t1);
}
- *expr = new(I) LoadIndexedNode(token_pos,
+ *expr = new(Z) LoadIndexedNode(token_pos,
array,
index,
load_indexed->super_class());
@@ -9125,9 +9134,9 @@
AstNode* receiver = getter->receiver();
if (!IsSimpleLocalOrLiteralNode(getter->receiver())) {
LocalVariable* t0 = result->AddInitializer(getter->receiver());
- receiver = new(I) LoadLocalNode(token_pos, t0);
+ receiver = new(Z) LoadLocalNode(token_pos, t0);
}
- *expr = new(I) InstanceGetterNode(
+ *expr = new(Z) InstanceGetterNode(
token_pos, receiver, getter->field_name());
return result;
}
@@ -9163,13 +9172,13 @@
intptr_t left_pos) {
AstNode* result = original->MakeAssignmentNode(rhs);
if (result == NULL) {
- String& name = String::ZoneHandle(I);
+ String& name = String::ZoneHandle(Z);
const Class* target_cls = &current_class();
if (original->IsTypeNode()) {
name = Symbols::New(original->AsTypeNode()->TypeName());
} else if (original->IsLoadStaticFieldNode()) {
name = original->AsLoadStaticFieldNode()->field().name();
- target_cls = &Class::Handle(I,
+ target_cls = &Class::Handle(Z,
original->AsLoadStaticFieldNode()->field().owner());
} else if ((left_ident != NULL) &&
(original->IsLiteralNode() ||
@@ -9182,7 +9191,7 @@
result = ThrowNoSuchMethodError(
original->token_pos(),
*target_cls,
- String::Handle(I, Field::SetterName(name)),
+ String::Handle(Z, Field::SetterName(name)),
NULL, // No arguments.
InvocationMirror::kStatic,
original->IsLoadLocalNode() ?
@@ -9202,12 +9211,12 @@
AstNode* Parser::ParseCascades(AstNode* expr) {
intptr_t cascade_pos = TokenPos();
- LetNode* cascade = new(I) LetNode(cascade_pos);
+ LetNode* cascade = new(Z) LetNode(cascade_pos);
LocalVariable* cascade_receiver_var = cascade->AddInitializer(expr);
while (CurrentToken() == Token::kCASCADE) {
cascade_pos = TokenPos();
LoadLocalNode* load_cascade_receiver =
- new(I) LoadLocalNode(cascade_pos, cascade_receiver_var);
+ new(Z) LoadLocalNode(cascade_pos, cascade_receiver_var);
if (Token::IsIdentifier(LookaheadToken(1))) {
// Replace .. with . for ParseSelectors().
token_kind_ = Token::kPERIOD;
@@ -9252,20 +9261,20 @@
}
// The result is an expression with the (side effects of the) cascade
// sequence followed by the (value of the) receiver temp variable load.
- cascade->AddNode(new(I) LoadLocalNode(cascade_pos, cascade_receiver_var));
+ cascade->AddNode(new(Z) LoadLocalNode(cascade_pos, cascade_receiver_var));
return cascade;
}
// Convert loading of a static const field into a literal node.
-static AstNode* LiteralIfStaticConst(Isolate* iso, AstNode* expr) {
+static AstNode* LiteralIfStaticConst(Zone* zone, AstNode* expr) {
if (expr->IsLoadStaticFieldNode()) {
const Field& field = expr->AsLoadStaticFieldNode()->field();
if (field.is_const()) {
ASSERT(field.value() != Object::sentinel().raw());
ASSERT(field.value() != Object::transition_sentinel().raw());
- return new(iso) LiteralNode(expr->token_pos(),
- Instance::ZoneHandle(iso, field.value()));
+ return new(zone) LiteralNode(expr->token_pos(),
+ Instance::ZoneHandle(zone, field.value()));
}
}
return expr;
@@ -9316,7 +9325,7 @@
ReportError("expression expected after throw");
}
AstNode* expr = ParseExpr(require_compiletime_const, consume_cascades);
- return new(I) ThrowNode(expr_pos, expr, NULL);
+ return new(Z) ThrowNode(expr_pos, expr, NULL);
}
AstNode* expr = ParseConditionalExpr();
if (!Token::IsAssignmentOperator(CurrentToken())) {
@@ -9326,7 +9335,7 @@
if (require_compiletime_const) {
expr = FoldConstExpr(expr_pos, expr);
} else {
- expr = LiteralIfStaticConst(I, expr);
+ expr = LiteralIfStaticConst(Z, expr);
}
return expr;
}
@@ -9354,7 +9363,7 @@
let_expr->AddNode(assign_expr);
return let_expr;
} else {
- AstNode* assigned_value = LiteralIfStaticConst(I, right_expr);
+ AstNode* assigned_value = LiteralIfStaticConst(Z, right_expr);
AstNode* assign_expr =
CreateAssignmentNode(expr, assigned_value, expr_ident, expr_pos);
ASSERT(assign_expr != NULL);
@@ -9384,7 +9393,7 @@
AstNode* expr1 = ParseExpr(kAllowConst, kNoCascades);
ExpectToken(Token::kCOLON);
AstNode* expr2 = ParseExpr(kAllowConst, kNoCascades);
- expr = new(I) ConditionalExprNode(expr_pos, expr, expr1, expr2);
+ expr = new(Z) ConditionalExprNode(expr_pos, expr, expr1, expr2);
}
return expr;
}
@@ -9398,7 +9407,7 @@
TRACE_PARSER("ParseAwaitExpr");
ConsumeToken();
parsed_function()->record_await();
- expr = new (I) AwaitNode(TokenPos(), ParseUnaryExpr());
+ expr = new (Z) AwaitNode(TokenPos(), ParseUnaryExpr());
} else if (IsPrefixOperator(CurrentToken())) {
Token::Kind unary_op = CurrentToken();
if (unary_op == Token::kSUB) {
@@ -9425,11 +9434,11 @@
LetNode* let_expr = PrepareCompoundAssignmentNodes(&expr);
Token::Kind binary_op =
(incr_op == Token::kINCR) ? Token::kADD : Token::kSUB;
- BinaryOpNode* add = new(I) BinaryOpNode(
+ BinaryOpNode* add = new(Z) BinaryOpNode(
op_pos,
binary_op,
expr,
- new(I) LiteralNode(op_pos, Smi::ZoneHandle(I, Smi::New(1))));
+ new(Z) LiteralNode(op_pos, Smi::ZoneHandle(Z, Smi::New(1))));
AstNode* store = CreateAssignmentNode(expr, add, expr_ident, expr_pos);
ASSERT(store != NULL);
let_expr->AddNode(store);
@@ -9449,15 +9458,15 @@
const bool saved_mode = SetAllowFunctionLiterals(true);
ArgumentListNode* arguments;
if (implicit_arguments == NULL) {
- arguments = new(I) ArgumentListNode(TokenPos());
+ arguments = new(Z) ArgumentListNode(TokenPos());
} else {
arguments = implicit_arguments;
}
- const GrowableObjectArray& names = GrowableObjectArray::Handle(I,
+ const GrowableObjectArray& names = GrowableObjectArray::Handle(Z,
GrowableObjectArray::New(Heap::kOld));
bool named_argument_seen = false;
if (LookaheadToken(1) != Token::kRPAREN) {
- String& arg_name = String::Handle(I);
+ String& arg_name = String::Handle(Z);
do {
ASSERT((CurrentToken() == Token::kLPAREN) ||
(CurrentToken() == Token::kCOMMA));
@@ -9488,7 +9497,7 @@
ExpectToken(Token::kRPAREN);
SetAllowFunctionLiterals(saved_mode);
if (named_argument_seen) {
- arguments->set_names(Array::Handle(I, Array::MakeArray(names)));
+ arguments->set_names(Array::Handle(Z, Array::MakeArray(names)));
}
return arguments;
}
@@ -9502,7 +9511,7 @@
ASSERT(CurrentToken() == Token::kLPAREN);
ArgumentListNode* arguments = ParseActualParameters(NULL, kAllowConst);
const int num_arguments = arguments->length();
- const Function& func = Function::ZoneHandle(I,
+ const Function& func = Function::ZoneHandle(Z,
Resolver::ResolveStatic(cls,
func_name,
num_arguments,
@@ -9511,12 +9520,12 @@
// Check if there is a static field of the same name, it could be a closure
// and so we try and invoke the closure.
AstNode* closure = NULL;
- const Field& field = Field::ZoneHandle(I, cls.LookupStaticField(func_name));
- Function& func = Function::ZoneHandle(I);
+ const Field& field = Field::ZoneHandle(Z, cls.LookupStaticField(func_name));
+ Function& func = Function::ZoneHandle(Z);
if (field.IsNull()) {
// No field, check if we have an explicit getter function.
const String& getter_name =
- String::ZoneHandle(I, Field::GetterName(func_name));
+ String::ZoneHandle(Z, Field::GetterName(func_name));
const int kNumArguments = 0; // no arguments.
func = Resolver::ResolveStatic(cls,
getter_name,
@@ -9524,11 +9533,11 @@
Object::empty_array());
if (!func.IsNull()) {
ASSERT(func.kind() != RawFunction::kImplicitStaticFinalGetter);
- closure = new(I) StaticGetterNode(
+ closure = new(Z) StaticGetterNode(
call_pos,
NULL,
false,
- Class::ZoneHandle(I, cls.raw()),
+ Class::ZoneHandle(Z, cls.raw()),
func_name);
return BuildClosureCall(call_pos, closure, arguments);
}
@@ -9553,13 +9562,13 @@
// source.
if (!FLAG_warn_on_javascript_compatibility || is_patch_source()) {
ASSERT(num_arguments == 2);
- return new(I) ComparisonNode(ident_pos,
+ return new(Z) ComparisonNode(ident_pos,
Token::kEQ_STRICT,
arguments->NodeAt(0),
arguments->NodeAt(1));
}
}
- return new(I) StaticCallNode(call_pos, func, arguments);
+ return new(Z) StaticCallNode(call_pos, func, arguments);
}
@@ -9568,7 +9577,7 @@
const intptr_t call_pos = TokenPos();
CheckToken(Token::kLPAREN);
ArgumentListNode* arguments = ParseActualParameters(NULL, kAllowConst);
- return new(I) InstanceCallNode(call_pos, receiver, func_name, arguments);
+ return new(Z) InstanceCallNode(call_pos, receiver, func_name, arguments);
}
@@ -9593,18 +9602,18 @@
}
// The field is initialized.
ASSERT(field.is_static());
- const Class& field_owner = Class::ZoneHandle(I, field.owner());
- const String& field_name = String::ZoneHandle(I, field.name());
- const String& getter_name = String::Handle(I, Field::GetterName(field_name));
- const Function& getter = Function::Handle(I,
+ const Class& field_owner = Class::ZoneHandle(Z, field.owner());
+ const String& field_name = String::ZoneHandle(Z, field.name());
+ const String& getter_name = String::Handle(Z, Field::GetterName(field_name));
+ const Function& getter = Function::Handle(Z,
field_owner.LookupStaticFunction(getter_name));
// Never load field directly if there is a getter (deterministic AST).
if (getter.IsNull() || field.is_const()) {
- return new(I) LoadStaticFieldNode(
- ident_pos, Field::ZoneHandle(I, field.raw()));
+ return new(Z) LoadStaticFieldNode(
+ ident_pos, Field::ZoneHandle(Z, field.raw()));
} else {
ASSERT(getter.kind() == RawFunction::kImplicitStaticFinalGetter);
- return new(I) StaticGetterNode(ident_pos,
+ return new(Z) StaticGetterNode(ident_pos,
NULL, // Receiver.
false, // is_super_getter.
field_owner,
@@ -9619,12 +9628,12 @@
bool consume_cascades) {
TRACE_PARSER("ParseStaticFieldAccess");
AstNode* access = NULL;
- const Field& field = Field::ZoneHandle(I, cls.LookupStaticField(field_name));
- Function& func = Function::ZoneHandle(I);
+ const Field& field = Field::ZoneHandle(Z, cls.LookupStaticField(field_name));
+ Function& func = Function::ZoneHandle(Z);
if (field.IsNull()) {
// No field, check if we have an explicit getter function.
const String& getter_name =
- String::ZoneHandle(I, Field::GetterName(field_name));
+ String::ZoneHandle(Z, Field::GetterName(field_name));
const int kNumArguments = 0; // no arguments.
func = Resolver::ResolveStatic(cls,
getter_name,
@@ -9642,16 +9651,16 @@
// Create a getter call, which may later be turned into
// a setter call, or else the backend will generate
// a throw NoSuchMethodError().
- access = new(I) StaticGetterNode(ident_pos,
+ access = new(Z) StaticGetterNode(ident_pos,
NULL,
false,
- Class::ZoneHandle(I, cls.raw()),
+ Class::ZoneHandle(Z, cls.raw()),
field_name);
}
} else {
ASSERT(func.kind() != RawFunction::kImplicitStaticFinalGetter);
- access = new(I) StaticGetterNode(
- ident_pos, NULL, false, Class::ZoneHandle(I, cls.raw()), field_name);
+ access = new(Z) StaticGetterNode(
+ ident_pos, NULL, false, Class::ZoneHandle(Z, cls.raw()), field_name);
}
} else {
access = GenerateStaticFieldLookup(field, ident_pos);
@@ -9676,11 +9685,11 @@
String& name = String::CheckedZoneHandle(primary->primary().raw());
if (current_function().is_static() ||
current_function().IsInFactoryScope()) {
- StaticGetterNode* getter = new(I) StaticGetterNode(
+ StaticGetterNode* getter = new(Z) StaticGetterNode(
primary->token_pos(),
NULL, // No receiver.
false, // Not a super getter.
- Class::ZoneHandle(I, current_class().raw()),
+ Class::ZoneHandle(Z, current_class().raw()),
name);
getter->set_is_deferred(primary->is_deferred_reference());
return getter;
@@ -9697,7 +9706,7 @@
ASSERT(primary->primary().IsFunction());
const Function& func =
Function::CheckedZoneHandle(primary->primary().raw());
- const String& funcname = String::ZoneHandle(I, func.name());
+ const String& funcname = String::ZoneHandle(Z, func.name());
if (func.is_static()) {
// Static function access.
ClosureNode* closure =
@@ -9733,7 +9742,7 @@
left = LoadClosure(primary_node);
} else if (primary_node->primary().IsTypeParameter()) {
if (current_function().is_static()) {
- const String& name = String::ZoneHandle(I,
+ const String& name = String::ZoneHandle(Z,
TypeParameter::Cast(primary_node->primary()).name());
ReportError(primary_pos,
"cannot access type parameter '%s' "
@@ -9744,13 +9753,13 @@
// Make sure that the instantiator is captured.
CaptureInstantiator();
}
- TypeParameter& type_parameter = TypeParameter::ZoneHandle(I);
+ TypeParameter& type_parameter = TypeParameter::ZoneHandle(Z);
type_parameter ^= ClassFinalizer::FinalizeType(
current_class(),
TypeParameter::Cast(primary_node->primary()),
ClassFinalizer::kCanonicalize);
ASSERT(!type_parameter.IsMalformed());
- left = new(I) TypeNode(primary->token_pos(), type_parameter);
+ left = new(Z) TypeNode(primary->token_pos(), type_parameter);
} else {
// Super field access handled in ParseSuperFieldAccess(),
// super calls handled in ParseSuperCall().
@@ -9772,7 +9781,7 @@
}
} else {
// Field access.
- Class& cls = Class::Handle(I);
+ Class& cls = Class::Handle(Z);
if (left->IsPrimaryNode()) {
PrimaryNode* primary_node = left->AsPrimaryNode();
if (primary_node->primary().IsClass()) {
@@ -9809,17 +9818,17 @@
array = LoadClosure(primary_node);
} else if (primary_node->primary().IsClass()) {
const Class& type_class = Class::Cast(primary_node->primary());
- AbstractType& type = Type::ZoneHandle(I,
- Type::New(type_class, TypeArguments::Handle(I),
+ AbstractType& type = Type::ZoneHandle(Z,
+ Type::New(type_class, TypeArguments::Handle(Z),
primary_pos, Heap::kOld));
type ^= ClassFinalizer::FinalizeType(
current_class(), type, ClassFinalizer::kCanonicalize);
// Type may be malbounded, but not malformed.
ASSERT(!type.IsMalformed());
- array = new(I) TypeNode(primary_pos, type);
+ array = new(Z) TypeNode(primary_pos, type);
} else if (primary_node->primary().IsTypeParameter()) {
if (current_function().is_static()) {
- const String& name = String::ZoneHandle(I,
+ const String& name = String::ZoneHandle(Z,
TypeParameter::Cast(primary_node->primary()).name());
ReportError(primary_pos,
"cannot access type parameter '%s' "
@@ -9830,19 +9839,19 @@
// Make sure that the instantiator is captured.
CaptureInstantiator();
}
- TypeParameter& type_parameter = TypeParameter::ZoneHandle(I);
+ TypeParameter& type_parameter = TypeParameter::ZoneHandle(Z);
type_parameter ^= ClassFinalizer::FinalizeType(
current_class(),
TypeParameter::Cast(primary_node->primary()),
ClassFinalizer::kCanonicalize);
ASSERT(!type_parameter.IsMalformed());
- array = new(I) TypeNode(primary_pos, type_parameter);
+ array = new(Z) TypeNode(primary_pos, type_parameter);
} else {
UNREACHABLE(); // Internal parser error.
}
}
- selector = new(I) LoadIndexedNode(
- bracket_pos, array, index, Class::ZoneHandle(I));
+ selector = new(Z) LoadIndexedNode(
+ bracket_pos, array, index, Class::ZoneHandle(Z));
} else if (CurrentToken() == Token::kLPAREN) {
if (left->IsPrimaryNode()) {
PrimaryNode* primary_node = left->AsPrimaryNode();
@@ -9849,10 +9858,10 @@
const intptr_t primary_pos = primary_node->token_pos();
if (primary_node->primary().IsFunction()) {
const Function& func = Function::Cast(primary_node->primary());
- const String& func_name = String::ZoneHandle(I, func.name());
+ const String& func_name = String::ZoneHandle(Z, func.name());
if (func.is_static()) {
// Parse static function call.
- Class& cls = Class::Handle(I, func.Owner());
+ Class& cls = Class::Handle(Z, func.Owner());
selector = ParseStaticCall(cls, func_name, primary_pos);
} else {
// Dynamic function call on implicit "this" parameter.
@@ -9884,7 +9893,7 @@
selector = ParseInstanceCall(LoadReceiver(primary_pos), name);
}
} else if (primary_node->primary().IsTypeParameter()) {
- const String& name = String::ZoneHandle(I,
+ const String& name = String::ZoneHandle(Z,
TypeParameter::Cast(primary_node->primary()).name());
if (current_function().is_static()) {
// Treat as this.T(), because T is in scope.
@@ -9898,13 +9907,13 @@
}
} else if (primary_node->primary().IsClass()) {
const Class& type_class = Class::Cast(primary_node->primary());
- AbstractType& type = Type::ZoneHandle(I, Type::New(
- type_class, TypeArguments::Handle(I), primary_pos));
+ AbstractType& type = Type::ZoneHandle(Z, Type::New(
+ type_class, TypeArguments::Handle(Z), primary_pos));
type ^= ClassFinalizer::FinalizeType(
current_class(), type, ClassFinalizer::kCanonicalize);
// Type may be malbounded, but not malformed.
ASSERT(!type.IsMalformed());
- selector = new(I) TypeNode(primary_pos, type);
+ selector = new(Z) TypeNode(primary_pos, type);
} else {
UNREACHABLE(); // Internal parser error.
}
@@ -9924,16 +9933,16 @@
left = LoadClosure(primary_node);
} else if (primary_node->primary().IsClass()) {
const Class& type_class = Class::Cast(primary_node->primary());
- AbstractType& type = Type::ZoneHandle(I, Type::New(
- type_class, TypeArguments::Handle(I), primary_pos));
+ AbstractType& type = Type::ZoneHandle(Z, Type::New(
+ type_class, TypeArguments::Handle(Z), primary_pos));
type = ClassFinalizer::FinalizeType(
current_class(), type, ClassFinalizer::kCanonicalize);
// Type may be malbounded, but not malformed.
ASSERT(!type.IsMalformed());
- left = new(I) TypeNode(primary_pos, type);
+ left = new(Z) TypeNode(primary_pos, type);
} else if (primary_node->primary().IsTypeParameter()) {
if (current_function().is_static()) {
- const String& name = String::ZoneHandle(I,
+ const String& name = String::ZoneHandle(Z,
TypeParameter::Cast(primary_node->primary()).name());
ReportError(primary_pos,
"cannot access type parameter '%s' "
@@ -9944,13 +9953,13 @@
// Make sure that the instantiator is captured.
CaptureInstantiator();
}
- TypeParameter& type_parameter = TypeParameter::ZoneHandle(I);
+ TypeParameter& type_parameter = TypeParameter::ZoneHandle(Z);
type_parameter ^= ClassFinalizer::FinalizeType(
current_class(),
TypeParameter::Cast(primary_node->primary()),
ClassFinalizer::kCanonicalize);
ASSERT(!type_parameter.IsMalformed());
- left = new(I) TypeNode(primary_pos, type_parameter);
+ left = new(Z) TypeNode(primary_pos, type_parameter);
} else if (primary_node->IsSuper()) {
// Return "super" to handle unary super operator calls,
// or to report illegal use of "super" otherwise.
@@ -9987,17 +9996,17 @@
LocalVariable* temp = let_expr->AddInitializer(expr);
Token::Kind binary_op =
(incr_op == Token::kINCR) ? Token::kADD : Token::kSUB;
- BinaryOpNode* add = new(I) BinaryOpNode(
+ BinaryOpNode* add = new(Z) BinaryOpNode(
expr_pos,
binary_op,
- new(I) LoadLocalNode(expr_pos, temp),
- new(I) LiteralNode(expr_pos, Smi::ZoneHandle(I, Smi::New(1))));
+ new(Z) LoadLocalNode(expr_pos, temp),
+ new(Z) LiteralNode(expr_pos, Smi::ZoneHandle(Z, Smi::New(1))));
AstNode* store = CreateAssignmentNode(expr, add, expr_ident, expr_pos);
ASSERT(store != NULL);
// The result is a pair of the (side effects of the) store followed by
// the (value of the) initial value temp variable load.
let_expr->AddNode(store);
- let_expr->AddNode(new(I) LoadLocalNode(expr_pos, temp));
+ let_expr->AddNode(new(Z) LoadLocalNode(expr_pos, temp));
return let_expr;
}
return expr;
@@ -10022,14 +10031,14 @@
// Resolve class.
if (!type->HasResolvedTypeClass()) {
const UnresolvedClass& unresolved_class =
- UnresolvedClass::Handle(I, type->unresolved_class());
+ UnresolvedClass::Handle(Z, type->unresolved_class());
const String& unresolved_class_name =
- String::Handle(I, unresolved_class.ident());
- Class& resolved_type_class = Class::Handle(I);
+ String::Handle(Z, unresolved_class.ident());
+ Class& resolved_type_class = Class::Handle(Z);
if (unresolved_class.library_prefix() == LibraryPrefix::null()) {
if (!scope_class.IsNull()) {
// First check if the type is a type parameter of the given scope class.
- const TypeParameter& type_parameter = TypeParameter::Handle(I,
+ const TypeParameter& type_parameter = TypeParameter::Handle(Z,
scope_class.LookupTypeParameter(unresolved_class_name));
if (!type_parameter.IsNull()) {
// A type parameter is considered to be a malformed type when
@@ -10037,23 +10046,23 @@
if (ParsingStaticMember()) {
ASSERT(scope_class.raw() == current_class().raw());
*type = ClassFinalizer::NewFinalizedMalformedType(
- Error::Handle(I), // No previous error.
+ Error::Handle(Z), // No previous error.
script_,
type->token_pos(),
"type parameter '%s' cannot be referenced "
"from static member",
- String::Handle(I, type_parameter.name()).ToCString());
+ String::Handle(Z, type_parameter.name()).ToCString());
return;
}
// A type parameter cannot be parameterized, so make the type
// malformed if type arguments have previously been parsed.
- if (!TypeArguments::Handle(I, type->arguments()).IsNull()) {
+ if (!TypeArguments::Handle(Z, type->arguments()).IsNull()) {
*type = ClassFinalizer::NewFinalizedMalformedType(
- Error::Handle(I), // No previous error.
+ Error::Handle(Z), // No previous error.
script_,
type_parameter.token_pos(),
"type parameter '%s' cannot be parameterized",
- String::Handle(I, type_parameter.name()).ToCString());
+ String::Handle(Z, type_parameter.name()).ToCString());
return;
}
*type = type_parameter.raw();
@@ -10069,7 +10078,7 @@
}
} else {
LibraryPrefix& lib_prefix =
- LibraryPrefix::Handle(I, unresolved_class.library_prefix());
+ LibraryPrefix::Handle(Z, unresolved_class.library_prefix());
// Resolve class name in the scope of the library prefix.
resolved_type_class =
ResolveClassInPrefixScope(lib_prefix, unresolved_class_name);
@@ -10081,21 +10090,21 @@
parameterized_type.set_type_class(resolved_type_class);
} else if (finalization >= ClassFinalizer::kCanonicalize) {
ClassFinalizer::FinalizeMalformedType(
- Error::Handle(I), // No previous error.
+ Error::Handle(Z), // No previous error.
script_,
parameterized_type,
"type '%s' is not loaded",
- String::Handle(I, parameterized_type.UserVisibleName()).ToCString());
+ String::Handle(Z, parameterized_type.UserVisibleName()).ToCString());
return;
}
}
// Resolve type arguments, if any.
- const TypeArguments& arguments = TypeArguments::Handle(I, type->arguments());
- TypeArguments::Handle(I, type->arguments());
+ const TypeArguments& arguments = TypeArguments::Handle(Z, type->arguments());
+ TypeArguments::Handle(Z, type->arguments());
if (!arguments.IsNull()) {
const intptr_t num_arguments = arguments.Length();
for (intptr_t i = 0; i < num_arguments; i++) {
- AbstractType& type_argument = AbstractType::Handle(I,
+ AbstractType& type_argument = AbstractType::Handle(Z,
arguments.TypeAt(i));
ResolveTypeFromClass(scope_class, finalization, &type_argument);
arguments.SetTypeAt(i, type_argument);
@@ -10140,11 +10149,11 @@
const AbstractType* Parser::ReceiverType(const Class& cls) {
ASSERT(!cls.IsNull());
const TypeArguments& type_arguments = TypeArguments::Handle(
- I,
+ Z,
(cls.NumTypeParameters() > 0) ?
cls.type_parameters() : TypeArguments::null());
AbstractType& type = AbstractType::ZoneHandle(
- I, Type::New(cls, type_arguments, cls.token_pos()));
+ Z, Type::New(cls, type_arguments, cls.token_pos()));
if (cls.is_type_finalized()) {
type ^= ClassFinalizer::FinalizeType(
cls, type, ClassFinalizer::kCanonicalizeWellFormed);
@@ -10171,7 +10180,7 @@
}
const char* error_str = NULL;
Instance& result =
- Instance::Handle(I, instance.CheckAndCanonicalize(&error_str));
+ Instance::Handle(Z, instance.CheckAndCanonicalize(&error_str));
if (result.IsNull()) {
ReportError(token_pos, "Invalid const object %s", error_str);
}
@@ -10185,12 +10194,12 @@
AstNode* Parser::RunStaticFieldInitializer(const Field& field,
intptr_t field_ref_pos) {
ASSERT(field.is_static());
- const Class& field_owner = Class::ZoneHandle(I, field.owner());
- const String& field_name = String::ZoneHandle(I, field.name());
- const String& getter_name = String::Handle(I, Field::GetterName(field_name));
- const Function& getter = Function::Handle(I,
+ const Class& field_owner = Class::ZoneHandle(Z, field.owner());
+ const String& field_name = String::ZoneHandle(Z, field.name());
+ const String& getter_name = String::Handle(Z, Field::GetterName(field_name));
+ const Function& getter = Function::Handle(Z,
field_owner.LookupStaticFunction(getter_name));
- const Instance& value = Instance::Handle(I, field.value());
+ const Instance& value = Instance::Handle(Z, field.value());
if (value.raw() == Object::transition_sentinel().raw()) {
if (field.is_const()) {
ReportError("circular dependency while initializing static field '%s'",
@@ -10197,7 +10206,7 @@
field_name.ToCString());
} else {
// The implicit static getter will throw the exception if necessary.
- return new(I) StaticGetterNode(
+ return new(Z) StaticGetterNode(
field_ref_pos, NULL, false, field_owner, field_name);
}
} else if (value.raw() == Object::sentinel().raw()) {
@@ -10207,7 +10216,7 @@
if (field.is_const()) {
field.set_value(Object::transition_sentinel());
const int kNumArguments = 0; // no arguments.
- const Function& func = Function::Handle(I,
+ const Function& func = Function::Handle(Z,
Resolver::ResolveStatic(field_owner,
getter_name,
kNumArguments,
@@ -10214,7 +10223,7 @@
Object::empty_array()));
ASSERT(!func.IsNull());
ASSERT(func.kind() == RawFunction::kImplicitStaticFinalGetter);
- Object& const_value = Object::Handle(I);
+ Object& const_value = Object::Handle(Z);
{
PAUSETIMERSCOPE(I, time_compilation);
const_value = DartEntry::InvokeFunction(func, Object::empty_array());
@@ -10229,7 +10238,7 @@
field.set_value(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(I, field.name());
+ const String& field_name = String::Handle(Z, field.name());
ReportErrors(error,
script_, field_ref_pos,
"error initializing const field '%s'",
@@ -10240,13 +10249,13 @@
UNREACHABLE();
}
ASSERT(const_value.IsNull() || const_value.IsInstance());
- Instance& instance = Instance::Handle(I);
+ Instance& instance = Instance::Handle(Z);
instance ^= const_value.raw();
instance = TryCanonicalize(instance, field_ref_pos);
field.set_value(instance);
return NULL; // Constant
} else {
- return new(I) StaticGetterNode(
+ return new(Z) StaticGetterNode(
field_ref_pos, NULL, false, field_owner, field_name);
}
}
@@ -10255,7 +10264,7 @@
return NULL;
}
ASSERT(getter.kind() == RawFunction::kImplicitGetter);
- return new(I) StaticGetterNode(
+ return new(Z) StaticGetterNode(
field_ref_pos, NULL, false, field_owner, field_name);
}
@@ -10269,8 +10278,8 @@
// Constructors have 2 extra arguments: rcvr and construction phase.
const int kNumExtraArgs = constructor.IsFactory() ? 1 : 2;
const int num_arguments = arguments->length() + kNumExtraArgs;
- const Array& arg_values = Array::Handle(I, Array::New(num_arguments));
- Instance& instance = Instance::Handle(I);
+ const Array& arg_values = Array::Handle(Z, Array::New(num_arguments));
+ Instance& instance = Instance::Handle(Z);
if (!constructor.IsFactory()) {
instance = Instance::New(type_class, Heap::kOld);
if (!type_arguments.IsNull()) {
@@ -10278,10 +10287,10 @@
ReportError("type must be constant in const constructor");
}
instance.SetTypeArguments(
- TypeArguments::Handle(I, type_arguments.Canonicalize()));
+ TypeArguments::Handle(Z, type_arguments.Canonicalize()));
}
arg_values.SetAt(0, instance);
- arg_values.SetAt(1, Smi::Handle(I, Smi::New(Function::kCtorPhaseAll)));
+ arg_values.SetAt(1, Smi::Handle(Z, Smi::New(Function::kCtorPhaseAll)));
} else {
// Prepend type_arguments to list of arguments to factory.
ASSERT(type_arguments.IsZoneHandle());
@@ -10293,9 +10302,9 @@
ASSERT(arg->IsLiteralNode());
arg_values.SetAt((i + kNumExtraArgs), arg->AsLiteralNode()->literal());
}
- const Array& args_descriptor = Array::Handle(I,
+ const Array& args_descriptor = Array::Handle(Z,
ArgumentsDescriptor::New(num_arguments, arguments->names()));
- Object& result = Object::Handle(I);
+ Object& result = Object::Handle(Z);
{
PAUSETIMERSCOPE(I, time_compilation);
result = DartEntry::InvokeFunction(
@@ -10337,7 +10346,7 @@
}
if (local != NULL) {
if (node != NULL) {
- *node = new(I) LoadLocalNode(ident_pos, local);
+ *node = new(Z) LoadLocalNode(ident_pos, local);
}
return true;
}
@@ -10345,14 +10354,14 @@
// Try to find the identifier in the class scope of the current class.
// If the current class is the result of a mixin application, we must
// use the class scope of the class from which the function originates.
- Class& cls = Class::Handle(I);
+ Class& cls = Class::Handle(Z);
if (!current_class().IsMixinApplication()) {
cls = current_class().raw();
} else {
cls = parsed_function()->function().origin();
}
- Function& func = Function::Handle(I, Function::null());
- Field& field = Field::Handle(I, Field::null());
+ Function& func = Function::Handle(Z, Function::null());
+ Field& field = Field::Handle(Z, Field::null());
// First check if a field exists.
field = cls.LookupField(ident);
@@ -10375,8 +10384,8 @@
func.IsStaticFunction() ||
func.is_abstract())) {
if (node != NULL) {
- *node = new(I) PrimaryNode(
- ident_pos, Function::ZoneHandle(I, func.raw()));
+ *node = new(Z) PrimaryNode(
+ ident_pos, Function::ZoneHandle(Z, func.raw()));
}
return true;
}
@@ -10388,13 +10397,13 @@
if (func.IsDynamicFunction() || func.is_abstract()) {
if (node != NULL) {
CheckInstanceFieldAccess(ident_pos, ident);
- ASSERT(AbstractType::Handle(I, func.result_type()).IsResolved());
+ ASSERT(AbstractType::Handle(Z, func.result_type()).IsResolved());
*node = CallGetter(ident_pos, LoadReceiver(ident_pos), ident);
}
return true;
} else if (func.IsStaticFunction()) {
if (node != NULL) {
- ASSERT(AbstractType::Handle(I, func.result_type()).IsResolved());
+ ASSERT(AbstractType::Handle(Z, func.result_type()).IsResolved());
// The static getter may later be changed into a dynamically
// resolved instance setter if no static setter can
// be found.
@@ -10404,10 +10413,10 @@
(LookupReceiver(current_block_->scope, kTestOnly) != NULL)) {
receiver = LoadReceiver(ident_pos);
}
- *node = new(I) StaticGetterNode(ident_pos,
+ *node = new(Z) StaticGetterNode(ident_pos,
receiver,
false,
- Class::ZoneHandle(I, cls.raw()),
+ Class::ZoneHandle(Z, cls.raw()),
ident);
}
return true;
@@ -10422,7 +10431,7 @@
// a setter node. If there is no assignment we will get an error
// when we try to invoke the getter.
CheckInstanceFieldAccess(ident_pos, ident);
- ASSERT(AbstractType::Handle(I, func.result_type()).IsResolved());
+ ASSERT(AbstractType::Handle(Z, func.result_type()).IsResolved());
*node = CallGetter(ident_pos, LoadReceiver(ident_pos), ident);
}
return true;
@@ -10432,11 +10441,11 @@
// it could be followed by an assignment which will convert it to
// a setter node. If there is no assignment we will get an error
// when we try to invoke the getter.
- *node = new(I) StaticGetterNode(
+ *node = new(Z) StaticGetterNode(
ident_pos,
NULL,
false,
- Class::ZoneHandle(I, cls.raw()),
+ Class::ZoneHandle(Z, cls.raw()),
ident);
}
return true;
@@ -10453,7 +10462,7 @@
RawClass* Parser::ResolveClassInCurrentLibraryScope(const String& name) {
HANDLESCOPE(I);
- const Object& obj = Object::Handle(I, library_.ResolveName(name));
+ const Object& obj = Object::Handle(Z, library_.ResolveName(name));
if (obj.IsClass()) {
return Class::Cast(obj).raw();
}
@@ -10468,10 +10477,10 @@
const String& ident) {
TRACE_PARSER("ResolveIdentInCurrentLibraryScope");
HANDLESCOPE(I);
- const Object& obj = Object::Handle(I, library_.ResolveName(ident));
+ const Object& obj = Object::Handle(Z, library_.ResolveName(ident));
if (obj.IsClass()) {
const Class& cls = Class::Cast(obj);
- return new(I) PrimaryNode(ident_pos, Class::ZoneHandle(I, cls.raw()));
+ return new(Z) PrimaryNode(ident_pos, Class::ZoneHandle(Z, cls.raw()));
} else if (obj.IsField()) {
const Field& field = Field::Cast(obj);
ASSERT(field.is_static());
@@ -10480,20 +10489,20 @@
const Function& func = Function::Cast(obj);
ASSERT(func.is_static());
if (func.IsGetterFunction() || func.IsSetterFunction()) {
- return new(I) StaticGetterNode(ident_pos,
+ return new(Z) StaticGetterNode(ident_pos,
/* receiver */ NULL,
/* is_super_getter */ false,
- Class::ZoneHandle(I, func.Owner()),
+ Class::ZoneHandle(Z, func.Owner()),
ident);
} else {
- return new(I) PrimaryNode(ident_pos, Function::ZoneHandle(I, func.raw()));
+ return new(Z) PrimaryNode(ident_pos, Function::ZoneHandle(Z, func.raw()));
}
} else {
ASSERT(obj.IsNull() || obj.IsLibraryPrefix());
}
// Lexically unresolved primary identifiers are referenced by their name.
- return new(I) PrimaryNode(ident_pos, ident);
+ return new(Z) PrimaryNode(ident_pos, ident);
}
@@ -10500,7 +10509,7 @@
RawClass* Parser::ResolveClassInPrefixScope(const LibraryPrefix& prefix,
const String& name) {
HANDLESCOPE(I);
- const Object& obj = Object::Handle(I, prefix.LookupObject(name));
+ const Object& obj = Object::Handle(Z, prefix.LookupObject(name));
if (obj.IsClass()) {
return Class::Cast(obj).raw();
}
@@ -10525,7 +10534,7 @@
// name, so we need to explicitly reject private names here.
return NULL;
}
- Object& obj = Object::Handle(I);
+ Object& obj = Object::Handle(Z);
if (prefix.is_loaded()) {
obj = prefix.LookupObject(ident);
} else {
@@ -10543,7 +10552,7 @@
} else if (obj.IsClass()) {
const Class& cls = Class::Cast(obj);
PrimaryNode* primary =
- new(I) PrimaryNode(ident_pos, Class::ZoneHandle(I, cls.raw()));
+ new(Z) PrimaryNode(ident_pos, Class::ZoneHandle(Z, cls.raw()));
primary->set_is_deferred(is_deferred);
return primary;
} else if (obj.IsField()) {
@@ -10563,17 +10572,17 @@
const Function& func = Function::Cast(obj);
ASSERT(func.is_static());
if (func.IsGetterFunction() || func.IsSetterFunction()) {
- StaticGetterNode* getter = new(I) StaticGetterNode(
+ StaticGetterNode* getter = new(Z) StaticGetterNode(
ident_pos,
/* receiver */ NULL,
/* is_super_getter */ false,
- Class::ZoneHandle(I, func.Owner()),
+ Class::ZoneHandle(Z, func.Owner()),
ident);
getter->set_is_deferred(is_deferred);
return getter;
} else {
- PrimaryNode* primary = new(I) PrimaryNode(
- ident_pos, Function::ZoneHandle(I, func.raw()));
+ PrimaryNode* primary = new(Z) PrimaryNode(
+ ident_pos, Function::ZoneHandle(Z, func.raw()));
primary->set_is_deferred(is_deferred);
return primary;
}
@@ -10600,7 +10609,7 @@
if (resolved == NULL) {
// Check whether the identifier is a type parameter.
if (!current_class().IsNull()) {
- TypeParameter& type_parameter = TypeParameter::ZoneHandle(I,
+ TypeParameter& type_parameter = TypeParameter::ZoneHandle(Z,
current_class().LookupTypeParameter(ident));
if (!type_parameter.IsNull()) {
if (current_block_->scope->function_level() > 0) {
@@ -10610,7 +10619,7 @@
type_parameter ^= ClassFinalizer::FinalizeType(
current_class(), type_parameter, ClassFinalizer::kCanonicalize);
ASSERT(!type_parameter.IsMalformed());
- return new(I) TypeNode(ident_pos, type_parameter);
+ return new(Z) TypeNode(ident_pos, type_parameter);
}
}
// Not found in the local scope, and the name is not a type parameter.
@@ -10648,13 +10657,13 @@
}
} else if (primary->primary().IsClass()) {
const Class& type_class = Class::Cast(primary->primary());
- AbstractType& type = Type::ZoneHandle(I,
- Type::New(type_class, TypeArguments::Handle(I), primary_pos));
+ AbstractType& type = Type::ZoneHandle(Z,
+ Type::New(type_class, TypeArguments::Handle(Z), primary_pos));
type ^= ClassFinalizer::FinalizeType(
current_class(), type, ClassFinalizer::kCanonicalize);
// Type may be malbounded, but not malformed.
ASSERT(!type.IsMalformed());
- resolved = new(I) TypeNode(primary_pos, type);
+ resolved = new(Z) TypeNode(primary_pos, type);
}
}
return resolved;
@@ -10670,8 +10679,8 @@
TRACE_PARSER("ParseType");
CheckToken(Token::kIDENT, "type name expected");
intptr_t ident_pos = TokenPos();
- LibraryPrefix& prefix = LibraryPrefix::Handle(I);
- String& type_name = String::Handle(I);;
+ LibraryPrefix& prefix = LibraryPrefix::Handle(Z);
+ String& type_name = String::Handle(Z);;
if (finalization == ClassFinalizer::kIgnore) {
if (!is_top_level_ && (current_block_ != NULL)) {
@@ -10701,7 +10710,7 @@
}
ConsumeToken(); // Period token.
ASSERT(IsIdentifier());
- String& qualified_name = String::Handle(I, type_name.raw());
+ String& qualified_name = String::Handle(Z, type_name.raw());
qualified_name = String::Concat(qualified_name, Symbols::Dot());
qualified_name = String::Concat(qualified_name, *CurrentLiteral());
ConsumeToken();
@@ -10708,7 +10717,7 @@
// The type is malformed. Skip over its type arguments.
ParseTypeArguments(ClassFinalizer::kIgnore);
return ClassFinalizer::NewFinalizedMalformedType(
- Error::Handle(I), // No previous error.
+ Error::Handle(Z), // No previous error.
script_,
ident_pos,
"qualified name '%s' does not refer to a type",
@@ -10723,7 +10732,7 @@
// The type is malformed. Skip over its type arguments.
ParseTypeArguments(ClassFinalizer::kIgnore);
return ClassFinalizer::NewFinalizedMalformedType(
- Error::Handle(I), // No previous error.
+ Error::Handle(Z), // No previous error.
script_,
ident_pos,
"using '%s' in this context is invalid",
@@ -10732,26 +10741,26 @@
if (!prefix.IsNull() && prefix.is_deferred_load() && !allow_deferred_type) {
ParseTypeArguments(ClassFinalizer::kIgnore);
return ClassFinalizer::NewFinalizedMalformedType(
- Error::Handle(I), // No previous error.
+ Error::Handle(Z), // No previous error.
script_,
ident_pos,
"using deferred type '%s.%s' is invalid",
- String::Handle(I, prefix.name()).ToCString(),
+ String::Handle(Z, prefix.name()).ToCString(),
type_name.ToCString());
}
}
- Object& type_class = Object::Handle(I);
+ Object& type_class = Object::Handle(Z);
// Leave type_class as null if type finalization mode is kIgnore.
if (finalization != ClassFinalizer::kIgnore) {
type_class = UnresolvedClass::New(prefix, type_name, ident_pos);
}
TypeArguments& type_arguments = TypeArguments::Handle(
- I, ParseTypeArguments(finalization));
+ Z, ParseTypeArguments(finalization));
if (finalization == ClassFinalizer::kIgnore) {
return Type::DynamicType();
}
AbstractType& type = AbstractType::Handle(
- I, Type::New(type_class, type_arguments, ident_pos));
+ Z, Type::New(type_class, type_arguments, ident_pos));
if (finalization >= ClassFinalizer::kResolveTypeParameters) {
ResolveTypeFromClass(current_class(), finalization, &type);
if (finalization >= ClassFinalizer::kCanonicalize) {
@@ -10766,7 +10775,7 @@
intptr_t pos, const Function& constructor,
const TypeArguments& type_arguments) {
if (!type_arguments.IsNull()) {
- const Class& constructor_class = Class::Handle(I, constructor.Owner());
+ const Class& constructor_class = Class::Handle(Z, constructor.Owner());
ASSERT(!constructor_class.IsNull());
ASSERT(constructor_class.is_finalized());
ASSERT(type_arguments.IsCanonical());
@@ -10793,9 +10802,9 @@
bool is_empty_literal = CurrentToken() == Token::kINDEX;
ConsumeToken();
- AbstractType& element_type = Type::ZoneHandle(I, Type::DynamicType());
+ AbstractType& element_type = Type::ZoneHandle(Z, Type::DynamicType());
TypeArguments& list_type_arguments =
- TypeArguments::ZoneHandle(I, type_arguments.raw());
+ TypeArguments::ZoneHandle(Z, type_arguments.raw());
// If no type argument vector is provided, leave it as null, which is
// equivalent to using dynamic as the type argument for the element type.
if (!list_type_arguments.IsNull()) {
@@ -10823,8 +10832,8 @@
}
}
ASSERT(list_type_arguments.IsNull() || (list_type_arguments.Length() == 1));
- const Class& array_class = Class::Handle(I, I->object_store()->array_class());
- Type& type = Type::ZoneHandle(I,
+ const Class& array_class = Class::Handle(Z, I->object_store()->array_class());
+ Type& type = Type::ZoneHandle(Z,
Type::New(array_class, list_type_arguments, type_pos));
type ^= ClassFinalizer::FinalizeType(
current_class(), type, ClassFinalizer::kCanonicalize);
@@ -10839,7 +10848,7 @@
if (FLAG_enable_type_checks &&
!is_const &&
!element_type.IsDynamicType()) {
- element = new(I) AssignableNode(element_pos,
+ element = new(Z) AssignableNode(element_pos,
element,
element_type,
Symbols::ListLiteralElement());
@@ -10858,10 +10867,10 @@
if (is_const) {
// Allocate and initialize the const list at compile time.
Array& const_list =
- Array::ZoneHandle(I, Array::New(element_list.length(), Heap::kOld));
+ Array::ZoneHandle(Z, Array::New(element_list.length(), Heap::kOld));
const_list.SetTypeArguments(
- TypeArguments::Handle(I, list_type_arguments.Canonicalize()));
- Error& malformed_error = Error::Handle(I);
+ TypeArguments::Handle(Z, list_type_arguments.Canonicalize()));
+ Error& malformed_error = Error::Handle(Z);
for (int i = 0; i < element_list.length(); i++) {
AstNode* elem = element_list[i];
// Arguments have been evaluated to a literal value already.
@@ -10872,7 +10881,7 @@
(!elem->AsLiteralNode()->literal().IsNull() &&
!elem->AsLiteralNode()->literal().IsInstanceOf(
element_type,
- TypeArguments::Handle(I),
+ TypeArguments::Handle(Z),
&malformed_error))) {
// If the failure is due to a malformed type error, display it instead.
if (!malformed_error.IsNull()) {
@@ -10882,7 +10891,7 @@
"list literal element at index %d must be "
"a constant of type '%s'",
i,
- String::Handle(I,
+ String::Handle(Z,
element_type.UserVisibleName()).ToCString());
}
}
@@ -10890,13 +10899,13 @@
}
const_list.MakeImmutable();
const_list ^= TryCanonicalize(const_list, literal_pos);
- return new(I) LiteralNode(literal_pos, const_list);
+ return new(Z) LiteralNode(literal_pos, const_list);
} else {
// Factory call at runtime.
const Class& factory_class =
- Class::Handle(I, Library::LookupCoreClass(Symbols::List()));
+ Class::Handle(Z, Library::LookupCoreClass(Symbols::List()));
ASSERT(!factory_class.IsNull());
- const Function& factory_method = Function::ZoneHandle(I,
+ const Function& factory_method = Function::ZoneHandle(Z,
factory_class.LookupFactory(
Library::PrivateCoreLibName(Symbols::ListLiteralFactory())));
ASSERT(!factory_method.IsNull());
@@ -10907,12 +10916,12 @@
CaptureInstantiator();
}
TypeArguments& factory_type_args =
- TypeArguments::ZoneHandle(I, list_type_arguments.raw());
+ TypeArguments::ZoneHandle(Z, list_type_arguments.raw());
// If the factory class extends other parameterized classes, adjust the
// type argument vector.
if (!factory_type_args.IsNull() && (factory_class.NumTypeArguments() > 1)) {
ASSERT(factory_type_args.Length() == 1);
- Type& factory_type = Type::Handle(I, Type::New(
+ Type& factory_type = Type::Handle(Z, Type::New(
factory_class, factory_type_args, type_pos, Heap::kNew));
factory_type ^= ClassFinalizer::FinalizeType(
current_class(), factory_type, ClassFinalizer::kFinalize);
@@ -10920,14 +10929,14 @@
ASSERT(factory_type_args.Length() == factory_class.NumTypeArguments());
}
factory_type_args = factory_type_args.Canonicalize();
- ArgumentListNode* factory_param = new(I) ArgumentListNode(
+ ArgumentListNode* factory_param = new(Z) ArgumentListNode(
literal_pos);
if (element_list.length() == 0) {
LiteralNode* empty_array_literal =
- new(I) LiteralNode(TokenPos(), Object::empty_array());
+ new(Z) LiteralNode(TokenPos(), Object::empty_array());
factory_param->Add(empty_array_literal);
} else {
- ArrayNode* list = new(I) ArrayNode(TokenPos(), type, element_list);
+ ArrayNode* list = new(Z) ArrayNode(TokenPos(), type, element_list);
factory_param->Add(list);
}
return CreateConstructorCallNode(literal_pos,
@@ -10946,7 +10955,7 @@
if (!type_arguments.IsNull() && !type_arguments.IsInstantiated()) {
EnsureExpressionTemp();
}
- return new(I) ConstructorCallNode(
+ return new(Z) ConstructorCallNode(
token_pos, type_arguments, constructor, arguments);
}
@@ -10985,10 +10994,10 @@
const intptr_t literal_pos = TokenPos();
ConsumeToken();
- AbstractType& key_type = Type::ZoneHandle(I, Type::DynamicType());
- AbstractType& value_type = Type::ZoneHandle(I, Type::DynamicType());
+ AbstractType& key_type = Type::ZoneHandle(Z, Type::DynamicType());
+ AbstractType& value_type = Type::ZoneHandle(Z, Type::DynamicType());
TypeArguments& map_type_arguments =
- TypeArguments::ZoneHandle(I, type_arguments.raw());
+ TypeArguments::ZoneHandle(Z, type_arguments.raw());
// If no type argument vector is provided, leave it as null, which is
// equivalent to using dynamic as the type argument for the both key and value
// types.
@@ -11032,7 +11041,7 @@
if (FLAG_enable_type_checks &&
!is_const &&
!key_type.IsDynamicType()) {
- key = new(I) AssignableNode(
+ key = new(Z) AssignableNode(
key_pos, key, key_type, Symbols::ListLiteralElement());
}
if (is_const) {
@@ -11055,7 +11064,7 @@
if (FLAG_enable_type_checks &&
!is_const &&
!value_type.IsDynamicType()) {
- value = new(I) AssignableNode(
+ value = new(Z) AssignableNode(
value_pos, value, value_type, Symbols::ListLiteralElement());
}
AddKeyValuePair(&kv_pairs_list, is_const, key, value);
@@ -11076,9 +11085,9 @@
// First, create the canonicalized key-value pair array.
Array& key_value_array =
- Array::ZoneHandle(I, Array::New(kv_pairs_list.length(), Heap::kOld));
- AbstractType& arg_type = Type::Handle(I);
- Error& malformed_error = Error::Handle(I);
+ Array::ZoneHandle(Z, Array::New(kv_pairs_list.length(), Heap::kOld));
+ AbstractType& arg_type = Type::Handle(Z);
+ Error& malformed_error = Error::Handle(Z);
for (int i = 0; i < kv_pairs_list.length(); i++) {
AstNode* arg = kv_pairs_list[i];
// Arguments have been evaluated to a literal value already.
@@ -11107,7 +11116,7 @@
"a constant of type '%s'",
((i % 2) == 0) ? "key" : "value",
i >> 1,
- String::Handle(I,
+ String::Handle(Z,
arg_type.UserVisibleName()).ToCString());
}
}
@@ -11118,19 +11127,19 @@
key_value_array ^= TryCanonicalize(key_value_array, TokenPos());
// Construct the map object.
- const Class& immutable_map_class = Class::Handle(I,
+ const Class& immutable_map_class = Class::Handle(Z,
Library::LookupCoreClass(Symbols::ImmutableMap()));
ASSERT(!immutable_map_class.IsNull());
// If the immutable map class extends other parameterized classes, we need
// to adjust the type argument vector. This is currently not the case.
ASSERT(immutable_map_class.NumTypeArguments() == 2);
- ArgumentListNode* constr_args = new(I) ArgumentListNode(TokenPos());
- constr_args->Add(new(I) LiteralNode(literal_pos, key_value_array));
+ ArgumentListNode* constr_args = new(Z) ArgumentListNode(TokenPos());
+ constr_args->Add(new(Z) LiteralNode(literal_pos, key_value_array));
const Function& map_constr =
- Function::ZoneHandle(I, immutable_map_class.LookupConstructor(
+ Function::ZoneHandle(Z, immutable_map_class.LookupConstructor(
Library::PrivateCoreLibName(Symbols::ImmutableMapConstructor())));
ASSERT(!map_constr.IsNull());
- const Object& constructor_result = Object::Handle(I,
+ const Object& constructor_result = Object::Handle(Z,
EvaluateConstConstructorCall(immutable_map_class,
map_type_arguments,
map_constr,
@@ -11141,15 +11150,15 @@
"error executing const Map constructor");
} else {
const Instance& const_instance = Instance::Cast(constructor_result);
- return new(I) LiteralNode(
- literal_pos, Instance::ZoneHandle(I, const_instance.raw()));
+ return new(Z) LiteralNode(
+ literal_pos, Instance::ZoneHandle(Z, const_instance.raw()));
}
} else {
// Factory call at runtime.
const Class& factory_class =
- Class::Handle(I, Library::LookupCoreClass(Symbols::Map()));
+ Class::Handle(Z, Library::LookupCoreClass(Symbols::Map()));
ASSERT(!factory_class.IsNull());
- const Function& factory_method = Function::ZoneHandle(I,
+ const Function& factory_method = Function::ZoneHandle(Z,
factory_class.LookupFactory(
Library::PrivateCoreLibName(Symbols::MapLiteralFactory())));
ASSERT(!factory_method.IsNull());
@@ -11160,12 +11169,12 @@
CaptureInstantiator();
}
TypeArguments& factory_type_args =
- TypeArguments::ZoneHandle(I, map_type_arguments.raw());
+ TypeArguments::ZoneHandle(Z, map_type_arguments.raw());
// If the factory class extends other parameterized classes, adjust the
// type argument vector.
if (!factory_type_args.IsNull() && (factory_class.NumTypeArguments() > 2)) {
ASSERT(factory_type_args.Length() == 2);
- Type& factory_type = Type::Handle(I, Type::New(
+ Type& factory_type = Type::Handle(Z, Type::New(
factory_class, factory_type_args, type_pos, Heap::kNew));
factory_type ^= ClassFinalizer::FinalizeType(
current_class(), factory_type, ClassFinalizer::kFinalize);
@@ -11173,12 +11182,12 @@
ASSERT(factory_type_args.Length() == factory_class.NumTypeArguments());
}
factory_type_args = factory_type_args.Canonicalize();
- ArgumentListNode* factory_param = new(I) ArgumentListNode(literal_pos);
+ ArgumentListNode* factory_param = new(Z) ArgumentListNode(literal_pos);
// The kv_pair array is temporary and of element type dynamic. It is passed
// to the factory to initialize a properly typed map.
- ArrayNode* kv_pairs = new(I) ArrayNode(
+ ArrayNode* kv_pairs = new(Z) ArrayNode(
TokenPos(),
- Type::ZoneHandle(I, Type::ArrayType()),
+ Type::ZoneHandle(Z, Type::ArrayType()),
kv_pairs_list);
factory_param->Add(kv_pairs);
return CreateConstructorCallNode(literal_pos,
@@ -11199,7 +11208,7 @@
ConsumeToken();
}
const intptr_t type_pos = TokenPos();
- TypeArguments& type_arguments = TypeArguments::Handle(I,
+ TypeArguments& type_arguments = TypeArguments::Handle(Z,
ParseTypeArguments(ClassFinalizer::kCanonicalize));
// Malformed type arguments are mapped to dynamic, so we will not encounter
// them here.
@@ -11222,7 +11231,7 @@
ASSERT(CurrentToken() == Token::kHASH);
ConsumeToken();
intptr_t symbol_pos = TokenPos();
- String& symbol = String::Handle(I);
+ String& symbol = String::Handle(Z);
if (IsIdentifier()) {
symbol = CurrentLiteral()->raw();
ConsumeToken();
@@ -11242,15 +11251,15 @@
// Call Symbol class constructor to create a symbol instance.
const Class& symbol_class = Class::Handle(I->object_store()->symbol_class());
ASSERT(!symbol_class.IsNull());
- ArgumentListNode* constr_args = new(I) ArgumentListNode(symbol_pos);
- constr_args->Add(new(I) LiteralNode(
- symbol_pos, String::ZoneHandle(I, Symbols::New(symbol))));
- const Function& constr = Function::ZoneHandle(I,
+ ArgumentListNode* constr_args = new(Z) ArgumentListNode(symbol_pos);
+ constr_args->Add(new(Z) LiteralNode(
+ symbol_pos, String::ZoneHandle(Z, Symbols::New(symbol))));
+ const Function& constr = Function::ZoneHandle(Z,
symbol_class.LookupConstructor(Symbols::SymbolCtor()));
ASSERT(!constr.IsNull());
- const Object& result = Object::Handle(I,
+ const Object& result = Object::Handle(Z,
EvaluateConstConstructorCall(symbol_class,
- TypeArguments::Handle(I),
+ TypeArguments::Handle(Z),
constr,
constr_args));
if (result.IsUnhandledException()) {
@@ -11259,8 +11268,8 @@
"error executing const Symbol constructor");
}
const Instance& instance = Instance::Cast(result);
- return new(I) LiteralNode(symbol_pos,
- Instance::ZoneHandle(I, instance.raw()));
+ return new(Z) LiteralNode(symbol_pos,
+ Instance::ZoneHandle(Z, instance.raw()));
}
@@ -11292,7 +11301,7 @@
const bool allow_deferred_type = !is_const;
const bool consume_unresolved_prefix = (LookaheadToken(3) == Token::kLT) ||
(LookaheadToken(3) == Token::kPERIOD);
- AbstractType& type = AbstractType::Handle(I,
+ AbstractType& type = AbstractType::Handle(Z,
ParseType(ClassFinalizer::kCanonicalizeWellFormed,
allow_deferred_type,
consume_unresolved_prefix));
@@ -11301,20 +11310,20 @@
if (!type.IsMalformed() && (type.IsTypeParameter() || type.IsDynamicType())) {
// Replace the type with a malformed type.
type = ClassFinalizer::NewFinalizedMalformedType(
- Error::Handle(I), // No previous error.
+ Error::Handle(Z), // No previous error.
script_,
type_pos,
"%s'%s' cannot be instantiated",
type.IsTypeParameter() ? "type parameter " : "",
type.IsTypeParameter() ?
- String::Handle(I, type.UserVisibleName()).ToCString() :
+ String::Handle(Z, type.UserVisibleName()).ToCString() :
"dynamic");
}
// Attempting to instantiate an enum type is a compile-time error.
- Class& type_class = Class::Handle(I, type.type_class());
+ Class& type_class = Class::Handle(Z, type.type_class());
if (type_class.is_enum_class()) {
ReportError(new_pos, "enum type '%s' can not be instantiated",
- String::Handle(I, type_class.Name()).ToCString());
+ String::Handle(Z, type_class.Name()).ToCString());
}
// The grammar allows for an optional ('.' identifier)? after the type, which
@@ -11336,7 +11345,7 @@
// malbounded type or report a compile-time error if the constructor is const.
if (type.IsMalformedOrMalbounded()) {
if (is_const) {
- const Error& error = Error::Handle(I, type.error());
+ const Error& error = Error::Handle(Z, type.error());
ReportError(error);
}
return ThrowTypeError(type_pos, type);
@@ -11343,9 +11352,9 @@
}
// Resolve the type and optional identifier to a constructor or factory.
- String& type_class_name = String::Handle(I, type_class.Name());
+ String& type_class_name = String::Handle(Z, type_class.Name());
TypeArguments& type_arguments =
- TypeArguments::ZoneHandle(I, type.arguments());
+ TypeArguments::ZoneHandle(Z, type.arguments());
// A constructor has an implicit 'this' parameter (instance to construct)
// and a factory has an implicit 'this' parameter (type_arguments).
@@ -11354,12 +11363,12 @@
// An additional type check of the result of a redirecting factory may be
// required.
- AbstractType& type_bound = AbstractType::ZoneHandle(I);
+ AbstractType& type_bound = AbstractType::ZoneHandle(Z);
// Make sure that an appropriate constructor exists.
String& constructor_name =
BuildConstructorName(type_class_name, named_constructor);
- Function& constructor = Function::ZoneHandle(I,
+ Function& constructor = Function::ZoneHandle(Z,
type_class.LookupConstructor(constructor_name));
if (constructor.IsNull()) {
constructor = type_class.LookupFactory(constructor_name);
@@ -11370,13 +11379,13 @@
// compile-time error if the constructor is const.
if (is_const) {
type = ClassFinalizer::NewFinalizedMalformedType(
- Error::Handle(I), // No previous error.
+ Error::Handle(Z), // No previous error.
script_,
call_pos,
"class '%s' has no constructor or factory named '%s'",
- String::Handle(I, type_class.Name()).ToCString(),
+ String::Handle(Z, type_class.Name()).ToCString(),
external_constructor_name.ToCString());
- ReportError(Error::Handle(I, type.error()));
+ ReportError(Error::Handle(Z, type.error()));
}
return ThrowNoSuchMethodError(call_pos,
type_class,
@@ -11387,12 +11396,12 @@
NULL); // No existing function.
} else if (constructor.IsRedirectingFactory()) {
ClassFinalizer::ResolveRedirectingFactory(type_class, constructor);
- Type& redirect_type = Type::Handle(I, constructor.RedirectionType());
+ Type& redirect_type = Type::Handle(Z, constructor.RedirectionType());
if (!redirect_type.IsMalformedOrMalbounded() &&
!redirect_type.IsInstantiated()) {
// The type arguments of the redirection type are instantiated from the
// type arguments of the parsed type of the 'new' or 'const' expression.
- Error& error = Error::Handle(I);
+ Error& error = Error::Handle(Z);
redirect_type ^= redirect_type.InstantiateFrom(type_arguments, &error);
if (!error.IsNull()) {
redirect_type = ClassFinalizer::NewFinalizedMalformedType(
@@ -11400,12 +11409,12 @@
script_,
call_pos,
"redirecting factory type '%s' cannot be instantiated",
- String::Handle(I, redirect_type.UserVisibleName()).ToCString());
+ String::Handle(Z, redirect_type.UserVisibleName()).ToCString());
}
}
if (redirect_type.IsMalformedOrMalbounded()) {
if (is_const) {
- ReportError(Error::Handle(I, redirect_type.error()));
+ ReportError(Error::Handle(Z, redirect_type.error()));
}
return ThrowTypeError(redirect_type.token_pos(), redirect_type);
}
@@ -11432,15 +11441,15 @@
ASSERT(!constructor.IsNull());
if (type_class.is_abstract() && !constructor.IsFactory()) {
// Evaluate arguments before throwing.
- LetNode* result = new(I) LetNode(call_pos);
+ LetNode* result = new(Z) LetNode(call_pos);
for (intptr_t i = 0; i < arguments->length(); ++i) {
result->AddNode(arguments->NodeAt(i));
}
- ArgumentListNode* error_arguments = new(I) ArgumentListNode(type_pos);
- error_arguments->Add(new(I) LiteralNode(
- TokenPos(), Integer::ZoneHandle(I, Integer::New(type_pos))));
- error_arguments->Add(new(I) LiteralNode(
- TokenPos(), String::ZoneHandle(I, type_class_name.raw())));
+ ArgumentListNode* error_arguments = new(Z) ArgumentListNode(type_pos);
+ error_arguments->Add(new(Z) LiteralNode(
+ TokenPos(), Integer::ZoneHandle(Z, Integer::New(type_pos))));
+ error_arguments->Add(new(Z) LiteralNode(
+ TokenPos(), String::ZoneHandle(Z, type_class_name.raw())));
result->AddNode(
MakeStaticCall(Symbols::AbstractClassInstantiationError(),
Library::PrivateCoreLibName(Symbols::ThrowNew()),
@@ -11447,7 +11456,7 @@
error_arguments));
return result;
}
- String& error_message = String::Handle(I);
+ String& error_message = String::Handle(Z);
if (!constructor.AreValidArguments(arguments_length,
arguments->names(),
&error_message)) {
@@ -11458,7 +11467,7 @@
"invalid arguments passed to constructor '%s' "
"for class '%s': %s",
external_constructor_name.ToCString(),
- String::Handle(I, type_class.Name()).ToCString(),
+ String::Handle(Z, type_class.Name()).ToCString(),
error_message.ToCString());
}
return ThrowNoSuchMethodError(call_pos,
@@ -11474,7 +11483,7 @@
// compile-time error if the constructor is const.
if (type.IsMalformedOrMalbounded()) {
if (is_const) {
- ReportError(Error::Handle(I, type.error()));
+ ReportError(Error::Handle(Z, type.error()));
}
return ThrowTypeError(type_pos, type);
}
@@ -11489,7 +11498,7 @@
"const object creation",
external_constructor_name.ToCString());
}
- const Object& constructor_result = Object::Handle(I,
+ const Object& constructor_result = Object::Handle(Z,
EvaluateConstConstructorCall(type_class,
type_arguments,
constructor,
@@ -11503,16 +11512,16 @@
} else {
// Const constructors can return null in the case where a const native
// factory returns a null value. Thus we cannot use a Instance::Cast here.
- Instance& const_instance = Instance::Handle(I);
+ Instance& const_instance = Instance::Handle(Z);
const_instance ^= constructor_result.raw();
- new_object = new(I) LiteralNode(
- new_pos, Instance::ZoneHandle(I, const_instance.raw()));
+ new_object = new(Z) LiteralNode(
+ new_pos, Instance::ZoneHandle(Z, const_instance.raw()));
if (!type_bound.IsNull()) {
ASSERT(!type_bound.IsMalformed());
- Error& malformed_error = Error::Handle(I);
+ Error& malformed_error = Error::Handle(Z);
ASSERT(!is_top_level_); // We cannot check unresolved types.
if (!const_instance.IsInstanceOf(type_bound,
- TypeArguments::Handle(I),
+ TypeArguments::Handle(Z),
&malformed_error)) {
type_bound = ClassFinalizer::NewFinalizedMalformedType(
malformed_error,
@@ -11519,7 +11528,7 @@
script_,
new_pos,
"const factory result is not an instance of '%s'",
- String::Handle(I, type_bound.UserVisibleName()).ToCString());
+ String::Handle(Z, type_bound.UserVisibleName()).ToCString());
new_object = ThrowTypeError(new_pos, type_bound);
}
type_bound = AbstractType::null();
@@ -11539,7 +11548,7 @@
new_pos, type_arguments, constructor, arguments);
}
if (!type_bound.IsNull()) {
- new_object = new(I) AssignableNode(
+ new_object = new(Z) AssignableNode(
new_pos, new_object, type_bound, Symbols::FactoryResult());
}
return new_object;
@@ -11548,14 +11557,14 @@
String& Parser::Interpolate(const GrowableArray<AstNode*>& values) {
const Class& cls = Class::Handle(
- I, Library::LookupCoreClass(Symbols::StringBase()));
+ Z, Library::LookupCoreClass(Symbols::StringBase()));
ASSERT(!cls.IsNull());
- const Function& func = Function::Handle(I, cls.LookupStaticFunction(
+ const Function& func = Function::Handle(Z, cls.LookupStaticFunction(
Library::PrivateCoreLibName(Symbols::Interpolate())));
ASSERT(!func.IsNull());
// Build the array of literal values to interpolate.
- const Array& value_arr = Array::Handle(I, Array::New(values.length()));
+ const Array& value_arr = Array::Handle(Z, Array::New(values.length()));
for (int i = 0; i < values.length(); i++) {
ASSERT(values[i]->IsLiteralNode());
value_arr.SetAt(i, values[i]->AsLiteralNode()->literal());
@@ -11562,11 +11571,11 @@
}
// Build argument array to pass to the interpolation function.
- const Array& interpolate_arg = Array::Handle(I, Array::New(1));
+ const Array& interpolate_arg = Array::Handle(Z, Array::New(1));
interpolate_arg.SetAt(0, value_arr);
// Call interpolation function.
- Object& result = Object::Handle(I);
+ Object& result = Object::Handle(Z);
{
PAUSETIMERSCOPE(I, time_compilation);
result = DartEntry::InvokeFunction(func, interpolate_arg);
@@ -11574,7 +11583,7 @@
if (result.IsUnhandledException()) {
ReportError("%s", Error::Cast(result).ToErrorCString());
}
- String& concatenated = String::ZoneHandle(I);
+ String& concatenated = String::ZoneHandle(Z);
concatenated ^= result.raw();
concatenated = Symbols::New(concatenated);
return concatenated;
@@ -11597,7 +11606,7 @@
(l1_token != Token::kINTERPOL_VAR) &&
(l1_token != Token::kINTERPOL_START)) {
// Common case: no interpolation.
- primary = new(I) LiteralNode(literal_start, *CurrentLiteral());
+ primary = new(Z) LiteralNode(literal_start, *CurrentLiteral());
ConsumeToken();
return primary;
}
@@ -11609,7 +11618,7 @@
if (CurrentLiteral()->Length() > 0) {
// Only add non-empty string sections to the values list
// that will be concatenated.
- values_list.Add(new(I) LiteralNode(TokenPos(), *CurrentLiteral()));
+ values_list.Add(new(Z) LiteralNode(TokenPos(), *CurrentLiteral()));
}
ConsumeToken();
while ((CurrentToken() == Token::kINTERPOL_VAR) ||
@@ -11643,7 +11652,7 @@
const_expr->IsBool() ||
const_expr->IsNull())) {
// Change expr into a literal.
- expr = new(I) LiteralNode(expr_pos,
+ expr = new(Z) LiteralNode(expr_pos,
EvaluateConstExpr(expr_pos, expr));
} else {
is_compiletime_const = false;
@@ -11654,25 +11663,25 @@
}
if (is_compiletime_const) {
if (has_interpolation) {
- primary = new(I) LiteralNode(literal_start, Interpolate(values_list));
+ primary = new(Z) LiteralNode(literal_start, Interpolate(values_list));
} else {
- const Array& strings = Array::Handle(I, Array::New(values_list.length()));
+ const Array& strings = Array::Handle(Z, Array::New(values_list.length()));
for (int i = 0; i < values_list.length(); i++) {
const Instance& part = values_list[i]->AsLiteralNode()->literal();
ASSERT(part.IsString());
strings.SetAt(i, String::Cast(part));
}
- String& lit = String::ZoneHandle(I,
+ String& lit = String::ZoneHandle(Z,
String::ConcatAll(strings, Heap::kOld));
lit = Symbols::New(lit);
- primary = new(I) LiteralNode(literal_start, lit);
+ primary = new(Z) LiteralNode(literal_start, lit);
}
} else {
- ArrayNode* values = new(I) ArrayNode(
+ ArrayNode* values = new(Z) ArrayNode(
TokenPos(),
- Type::ZoneHandle(I, Type::ArrayType()),
+ Type::ZoneHandle(Z, Type::ArrayType()),
values_list);
- primary = new(I) StringInterpolateNode(TokenPos(), values);
+ primary = new(Z) StringInterpolateNode(TokenPos(), values);
}
return primary;
}
@@ -11691,7 +11700,7 @@
CloseBlock();
} else if (IsIdentifier()) {
intptr_t qual_ident_pos = TokenPos();
- const LibraryPrefix& prefix = LibraryPrefix::ZoneHandle(I, ParsePrefix());
+ const LibraryPrefix& prefix = LibraryPrefix::ZoneHandle(Z, ParsePrefix());
String& ident = *CurrentLiteral();
ConsumeToken();
if (prefix.IsNull()) {
@@ -11698,10 +11707,10 @@
if (!ResolveIdentInLocalScope(qual_ident_pos, ident, &primary)) {
// Check whether the identifier is a type parameter.
if (!current_class().IsNull()) {
- TypeParameter& type_param = TypeParameter::ZoneHandle(I,
+ TypeParameter& type_param = TypeParameter::ZoneHandle(Z,
current_class().LookupTypeParameter(ident));
if (!type_param.IsNull()) {
- return new(I) PrimaryNode(qual_ident_pos, type_param);
+ return new(Z) PrimaryNode(qual_ident_pos, type_param);
}
}
// This is a non-local unqualified identifier so resolve the
@@ -11727,7 +11736,7 @@
// let ParseSelectors() handle the loadLibrary call.
SetPosition(qual_ident_pos);
ConsumeToken(); // Prefix name.
- primary = new(I) LiteralNode(qual_ident_pos, prefix);
+ primary = new(Z) LiteralNode(qual_ident_pos, prefix);
} else {
// TODO(hausner): Ideally we should generate the NoSuchMethodError
// later, when we know more about how the unresolved name is used.
@@ -11739,7 +11748,7 @@
// is used. We cheat a little here by looking at the next token
// to determine whether we have an unresolved method call or
// field access.
- String& qualified_name = String::ZoneHandle(I, prefix.name());
+ String& qualified_name = String::ZoneHandle(Z, prefix.name());
qualified_name = String::Concat(qualified_name, Symbols::Dot());
qualified_name = String::Concat(qualified_name, ident);
qualified_name = Symbols::New(qualified_name);
@@ -11762,20 +11771,20 @@
if (local == NULL) {
ReportError("receiver 'this' is not in scope");
}
- primary = new(I) LoadLocalNode(TokenPos(), local);
+ primary = new(Z) LoadLocalNode(TokenPos(), local);
ConsumeToken();
} else if (token == Token::kINTEGER) {
- const Integer& literal = Integer::ZoneHandle(I, CurrentIntegerLiteral());
- primary = new(I) LiteralNode(TokenPos(), literal);
+ const Integer& literal = Integer::ZoneHandle(Z, CurrentIntegerLiteral());
+ primary = new(Z) LiteralNode(TokenPos(), literal);
ConsumeToken();
} else if (token == Token::kTRUE) {
- primary = new(I) LiteralNode(TokenPos(), Bool::True());
+ primary = new(Z) LiteralNode(TokenPos(), Bool::True());
ConsumeToken();
} else if (token == Token::kFALSE) {
- primary = new(I) LiteralNode(TokenPos(), Bool::False());
+ primary = new(Z) LiteralNode(TokenPos(), Bool::False());
ConsumeToken();
} else if (token == Token::kNULL) {
- primary = new(I) LiteralNode(TokenPos(), Instance::ZoneHandle(I));
+ primary = new(Z) LiteralNode(TokenPos(), Instance::ZoneHandle(Z));
ConsumeToken();
} else if (token == Token::kLPAREN) {
ConsumeToken();
@@ -11784,11 +11793,11 @@
SetAllowFunctionLiterals(saved_mode);
ExpectToken(Token::kRPAREN);
} else if (token == Token::kDOUBLE) {
- Double& double_value = Double::ZoneHandle(I, CurrentDoubleLiteral());
+ Double& double_value = Double::ZoneHandle(Z, CurrentDoubleLiteral());
if (double_value.IsNull()) {
ReportError("invalid double literal");
}
- primary = new(I) LiteralNode(TokenPos(), double_value);
+ primary = new(Z) LiteralNode(TokenPos(), double_value);
ConsumeToken();
} else if (token == Token::kSTRING) {
primary = ParseStringLiteral(true);
@@ -11818,13 +11827,13 @@
}
if (current_class().SuperClass() == Class::null()) {
ReportError("class '%s' does not have a superclass",
- String::Handle(I, current_class().Name()).ToCString());
+ String::Handle(Z, current_class().Name()).ToCString());
}
if (current_class().IsMixinApplication()) {
- const Type& mixin_type = Type::Handle(I, current_class().mixin());
+ const Type& mixin_type = Type::Handle(Z, current_class().mixin());
if (mixin_type.type_class() == current_function().origin()) {
ReportError("method of mixin class '%s' may not refer to 'super'",
- String::Handle(I, Class::Handle(I,
+ String::Handle(Z, Class::Handle(Z,
current_function().origin()).Name()).ToCString());
}
}
@@ -11844,7 +11853,7 @@
(CurrentToken() == Token::kNE)) {
primary = ParseSuperOperator();
} else {
- primary = new(I) PrimaryNode(super_pos, Symbols::Super());
+ primary = new(Z) PrimaryNode(super_pos, Symbols::Super());
}
} else {
UnexpectedToken();
@@ -11868,17 +11877,17 @@
ASSERT(field.is_const());
ASSERT(field.value() != Object::sentinel().raw());
ASSERT(field.value() != Object::transition_sentinel().raw());
- return Instance::ZoneHandle(I, field.value());
+ return Instance::ZoneHandle(Z, field.value());
} else {
ASSERT(expr->EvalConstExpr() != NULL);
- ReturnNode* ret = new(I) ReturnNode(expr->token_pos(), expr);
+ ReturnNode* ret = new(Z) ReturnNode(expr->token_pos(), expr);
// Compile time constant expressions cannot reference anything from a
// local scope.
- LocalScope* empty_scope = new(I) LocalScope(NULL, 0, 0);
- SequenceNode* seq = new(I) SequenceNode(expr->token_pos(), empty_scope);
+ LocalScope* empty_scope = new(Z) LocalScope(NULL, 0, 0);
+ SequenceNode* seq = new(Z) SequenceNode(expr->token_pos(), empty_scope);
seq->Add(ret);
- Object& result = Object::Handle(I, Compiler::ExecuteOnce(seq));
+ Object& result = Object::Handle(Z, Compiler::ExecuteOnce(seq));
if (result.IsError()) {
ReportErrors(Error::Cast(result),
script_, expr_pos,
@@ -11885,7 +11894,7 @@
"error evaluating constant expression");
}
ASSERT(result.IsInstance());
- Instance& value = Instance::ZoneHandle(I);
+ Instance& value = Instance::ZoneHandle(Z);
value ^= result.raw();
value = TryCanonicalize(value, TokenPos());
return value;
« no previous file with comments | « runtime/vm/parser.h ('k') | runtime/vm/parser_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698