| Index: runtime/vm/parser.cc
|
| ===================================================================
|
| --- runtime/vm/parser.cc (revision 36443)
|
| +++ runtime/vm/parser.cc (working copy)
|
| @@ -381,7 +381,7 @@
|
| Isolate* isolate = Isolate::Current();
|
| ASSERT(isolate->long_jump_base()->IsSafeToJump());
|
| TimerScope timer(FLAG_compiler_stats, &CompilerStats::parser_timer);
|
| - VMTagScope tagScope(isolate, VMTag::kCompileTagId);
|
| + VMTagScope tagScope(isolate, VMTag::kCompileTopLevelTagId);
|
| Parser parser(script, library, 0);
|
| parser.ParseTopLevel();
|
| }
|
| @@ -730,7 +730,6 @@
|
| void Parser::ParseClass(const Class& cls) {
|
| if (!cls.is_synthesized_class()) {
|
| Isolate* isolate = Isolate::Current();
|
| - VMTagScope tagScope(isolate, VMTag::kCompileTagId);
|
| TimerScope timer(FLAG_compiler_stats, &CompilerStats::parser_timer);
|
| ASSERT(isolate->long_jump_base()->IsSafeToJump());
|
| const Script& script = Script::Handle(isolate, cls.script());
|
| @@ -789,7 +788,6 @@
|
|
|
| void Parser::ParseFunction(ParsedFunction* parsed_function) {
|
| Isolate* isolate = Isolate::Current();
|
| - VMTagScope tagScope(isolate, VMTag::kCompileTagId);
|
| TimerScope timer(FLAG_compiler_stats, &CompilerStats::parser_timer);
|
| CompilerStats::num_functions_compiled++;
|
| ASSERT(isolate->long_jump_base()->IsSafeToJump());
|
| @@ -8777,14 +8775,15 @@
|
| // Resolve class.
|
| if (!type->HasResolvedTypeClass()) {
|
| const UnresolvedClass& unresolved_class =
|
| - UnresolvedClass::Handle(type->unresolved_class());
|
| + UnresolvedClass::Handle(isolate(), type->unresolved_class());
|
| const String& unresolved_class_name =
|
| - String::Handle(unresolved_class.ident());
|
| - Class& resolved_type_class = Class::Handle();
|
| + String::Handle(isolate(), unresolved_class.ident());
|
| + Class& resolved_type_class = Class::Handle(isolate());
|
| 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(
|
| + isolate(),
|
| scope_class.LookupTypeParameter(unresolved_class_name));
|
| if (!type_parameter.IsNull()) {
|
| // A type parameter is considered to be a malformed type when
|
| @@ -8792,23 +8791,23 @@
|
| if (ParsingStaticMember()) {
|
| ASSERT(scope_class.raw() == current_class().raw());
|
| *type = ClassFinalizer::NewFinalizedMalformedType(
|
| - Error::Handle(), // No previous error.
|
| + Error::Handle(isolate()), // No previous error.
|
| script_,
|
| type->token_pos(),
|
| "type parameter '%s' cannot be referenced "
|
| "from static member",
|
| - String::Handle(type_parameter.name()).ToCString());
|
| + String::Handle(isolate(), 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(type->arguments()).IsNull()) {
|
| + if (!TypeArguments::Handle(isolate(), type->arguments()).IsNull()) {
|
| *type = ClassFinalizer::NewFinalizedMalformedType(
|
| - Error::Handle(), // No previous error.
|
| + Error::Handle(isolate()), // No previous error.
|
| script_,
|
| type_parameter.token_pos(),
|
| "type parameter '%s' cannot be parameterized",
|
| - String::Handle(type_parameter.name()).ToCString());
|
| + String::Handle(isolate(), type_parameter.name()).ToCString());
|
| return;
|
| }
|
| *type = type_parameter.raw();
|
| @@ -8824,7 +8823,7 @@
|
| }
|
| } else {
|
| LibraryPrefix& lib_prefix =
|
| - LibraryPrefix::Handle(unresolved_class.library_prefix());
|
| + LibraryPrefix::Handle(isolate(), unresolved_class.library_prefix());
|
| // Resolve class name in the scope of the library prefix.
|
| resolved_type_class =
|
| ResolveClassInPrefixScope(lib_prefix, unresolved_class_name);
|
| @@ -8836,21 +8835,24 @@
|
| parameterized_type.set_type_class(resolved_type_class);
|
| } else if (finalization >= ClassFinalizer::kCanonicalize) {
|
| ClassFinalizer::FinalizeMalformedType(
|
| - Error::Handle(), // No previous error.
|
| + Error::Handle(isolate()), // No previous error.
|
| script_,
|
| parameterized_type,
|
| "type '%s' is not loaded",
|
| - String::Handle(parameterized_type.UserVisibleName()).ToCString());
|
| + String::Handle(isolate(),
|
| + parameterized_type.UserVisibleName()).ToCString());
|
| return;
|
| }
|
| }
|
| // Resolve type arguments, if any.
|
| - const TypeArguments& arguments = TypeArguments::Handle(type->arguments());
|
| - TypeArguments::Handle(type->arguments());
|
| + const TypeArguments& arguments = TypeArguments::Handle(isolate(),
|
| + type->arguments());
|
| + TypeArguments::Handle(isolate(), 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(arguments.TypeAt(i));
|
| + AbstractType& type_argument = AbstractType::Handle(isolate(),
|
| + arguments.TypeAt(i));
|
| ResolveTypeFromClass(scope_class, finalization, &type_argument);
|
| arguments.SetTypeAt(i, type_argument);
|
| }
|
|
|