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

Unified Diff: runtime/vm/parser.cc

Issue 196413011: - Implement a PauseTimerScope so that we can properly exclude (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 9 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/object.cc ('k') | runtime/vm/timer.h » ('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 33660)
+++ runtime/vm/parser.cc (working copy)
@@ -8903,12 +8903,13 @@
AstNode* Parser::RunStaticFieldInitializer(const Field& field,
intptr_t field_ref_pos) {
ASSERT(field.is_static());
- const Class& field_owner = Class::ZoneHandle(field.owner());
- const String& field_name = String::ZoneHandle(field.name());
- const String& getter_name = String::Handle(Field::GetterName(field_name));
- const Function& getter =
- Function::Handle(field_owner.LookupStaticFunction(getter_name));
- const Instance& value = Instance::Handle(field.value());
+ const Class& field_owner = Class::ZoneHandle(isolate(), field.owner());
+ const String& field_name = String::ZoneHandle(isolate(), field.name());
+ const String& getter_name = String::Handle(isolate(),
+ Field::GetterName(field_name));
+ const Function& getter = Function::Handle(
+ isolate(), field_owner.LookupStaticFunction(getter_name));
+ const Instance& value = Instance::Handle(isolate(), field.value());
if (value.raw() == Object::transition_sentinel().raw()) {
if (field.is_const()) {
ErrorMsg("circular dependency while initializing static field '%s'",
@@ -8928,15 +8929,18 @@
if (field.is_const()) {
field.set_value(Object::transition_sentinel());
const int kNumArguments = 0; // no arguments.
- const Function& func =
- Function::Handle(Resolver::ResolveStatic(field_owner,
- getter_name,
- kNumArguments,
- Object::empty_array()));
+ const Function& func = Function::Handle(
+ isolate(), Resolver::ResolveStatic(field_owner,
+ getter_name,
+ kNumArguments,
+ Object::empty_array()));
ASSERT(!func.IsNull());
ASSERT(func.kind() == RawFunction::kImplicitStaticFinalGetter);
- Object& const_value = Object::Handle(
- DartEntry::InvokeFunction(func, Object::empty_array()));
+ Object& const_value = Object::Handle(isolate());
+ {
+ PAUSETIMERSCOPE(isolate(), time_compilation);
+ const_value = DartEntry::InvokeFunction(func, Object::empty_array());
+ }
if (const_value.IsError()) {
const Error& error = Error::Cast(const_value);
if (error.IsUnhandledException()) {
@@ -8990,8 +8994,9 @@
// 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(Array::New(num_arguments));
- Instance& instance = Instance::Handle();
+ const Array& arg_values = Array::Handle(isolate(),
+ Array::New(num_arguments));
+ Instance& instance = Instance::Handle(isolate());
if (!constructor.IsFactory()) {
instance = Instance::New(type_class, Heap::kOld);
if (!type_arguments.IsNull()) {
@@ -9014,13 +9019,14 @@
ASSERT(arg->IsLiteralNode());
arg_values.SetAt((i + kNumExtraArgs), arg->AsLiteralNode()->literal());
}
- const Array& args_descriptor =
- Array::Handle(ArgumentsDescriptor::New(num_arguments,
- arguments->names()));
- const Object& result =
- Object::Handle(DartEntry::InvokeFunction(constructor,
- arg_values,
- args_descriptor));
+ const Array& args_descriptor = Array::Handle(
+ isolate(), ArgumentsDescriptor::New(num_arguments, arguments->names()));
+ Object& result = Object::Handle(isolate());
+ {
+ PAUSETIMERSCOPE(isolate(), time_compilation);
+ result = DartEntry::InvokeFunction(
+ constructor, arg_values, args_descriptor);
+ }
if (result.IsError()) {
// An exception may not occur in every parse attempt, i.e., the
// generated AST is not deterministic. Therefore mark the function as
@@ -10184,28 +10190,31 @@
String& Parser::Interpolate(const GrowableArray<AstNode*>& values) {
- const Class& cls =
- Class::Handle(Library::LookupCoreClass(Symbols::StringBase()));
+ const Class& cls = Class::Handle(
+ isolate(), Library::LookupCoreClass(Symbols::StringBase()));
ASSERT(!cls.IsNull());
- const Function& func =
- Function::Handle(cls.LookupStaticFunction(
- Library::PrivateCoreLibName(Symbols::Interpolate())));
+ const Function& func = Function::Handle(isolate(), cls.LookupStaticFunction(
+ Library::PrivateCoreLibName(Symbols::Interpolate())));
ASSERT(!func.IsNull());
// Build the array of literal values to interpolate.
- const Array& value_arr = Array::Handle(Array::New(values.length()));
+ const Array& value_arr = Array::Handle(isolate(),
+ Array::New(values.length()));
for (int i = 0; i < values.length(); i++) {
ASSERT(values[i]->IsLiteralNode());
value_arr.SetAt(i, values[i]->AsLiteralNode()->literal());
}
// Build argument array to pass to the interpolation function.
- const Array& interpolate_arg = Array::Handle(Array::New(1));
+ const Array& interpolate_arg = Array::Handle(isolate(), Array::New(1));
interpolate_arg.SetAt(0, value_arr);
// Call interpolation function.
- String& concatenated = String::ZoneHandle();
- concatenated ^= DartEntry::InvokeFunction(func, interpolate_arg);
+ String& concatenated = String::ZoneHandle(isolate());
+ {
+ PAUSETIMERSCOPE(isolate(), time_compilation);
+ concatenated ^= DartEntry::InvokeFunction(func, interpolate_arg);
+ }
if (concatenated.IsUnhandledException()) {
ErrorMsg("Exception thrown in Parser::Interpolate");
}
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/timer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698