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

Unified Diff: runtime/vm/parser.cc

Issue 1300033002: Fix compiler stats (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Review comments Created 5 years, 3 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/scanner.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/parser.cc
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index e2668107a588d38320b5aacbfe755c85b9257fb4..dc8f3840a87bcd616ce14c73ba91bdc13021d9e6 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -466,8 +466,6 @@ void Parser::ComputeCurrentToken() {
Token::Kind Parser::LookaheadToken(int num_tokens) {
- INC_STAT(I, num_tokens_lookahead, 1);
- INC_STAT(I, num_token_checks, 1);
return tokens_iterator_.LookaheadTokenKind(num_tokens);
}
@@ -804,25 +802,26 @@ class TopLevel : public ValueObject {
void Parser::ParseClass(const Class& cls) {
+ Thread* thread = Thread::Current();
+ Zone* zone = thread->zone();
+ const int64_t num_tokes_before = STAT_VALUE(thread, num_tokens_consumed);
if (!cls.is_synthesized_class()) {
- Thread* thread = Thread::Current();
- Zone* zone = thread->zone();
- CSTAT_TIMER_SCOPE(thread, parser_timer);
ASSERT(thread->long_jump_base()->IsSafeToJump());
+ CSTAT_TIMER_SCOPE(thread, parser_timer);
const Script& script = Script::Handle(zone, cls.script());
const Library& lib = Library::Handle(zone, cls.library());
Parser parser(script, lib, cls.token_pos());
parser.ParseClassDefinition(cls);
} else if (cls.is_enum_class()) {
- Thread* thread = Thread::Current();
- Zone* zone = thread->zone();
- CSTAT_TIMER_SCOPE(thread, parser_timer);
ASSERT(thread->long_jump_base()->IsSafeToJump());
+ CSTAT_TIMER_SCOPE(thread, parser_timer);
const Script& script = Script::Handle(zone, cls.script());
const Library& lib = Library::Handle(zone, cls.library());
Parser parser(script, lib, cls.token_pos());
parser.ParseEnumDefinition(cls);
}
+ const int64_t num_tokes_after = STAT_VALUE(thread, num_tokens_consumed);
+ INC_STAT(thread, num_class_tokens, num_tokes_after - num_tokes_before);
}
@@ -909,10 +908,9 @@ bool Parser::ParseFormalParameters(const Function& func, ParamList* params) {
void Parser::ParseFunction(ParsedFunction* parsed_function) {
Thread* thread = parsed_function->thread();
ASSERT(thread == Thread::Current());
- Isolate* isolate = thread->isolate();
Zone* zone = thread->zone();
CSTAT_TIMER_SCOPE(thread, parser_timer);
- INC_STAT(isolate, num_functions_compiled, 1);
+ INC_STAT(thread, num_functions_parsed, 1);
VMTagScope tagScope(thread, VMTag::kCompileParseFunctionTagId,
FLAG_profile_vm);
@@ -956,10 +954,11 @@ void Parser::ParseFunction(ParsedFunction* parsed_function) {
break;
case RawFunction::kImplicitStaticFinalGetter:
node_sequence = parser.ParseStaticFinalGetter(func);
- INC_STAT(isolate, num_implicit_final_getters, 1);
+ INC_STAT(thread, num_implicit_final_getters, 1);
break;
case RawFunction::kMethodExtractor:
node_sequence = parser.ParseMethodExtractor(func);
+ INC_STAT(thread, num_method_extractors, 1);
break;
case RawFunction::kNoSuchMethodDispatcher:
node_sequence =
@@ -1198,47 +1197,6 @@ ParsedFunction* Parser::ParseStaticFieldInitializer(const Field& field) {
}
-RawObject* Parser::ParseFunctionFromSource(const Class& owning_class,
- const String& source) {
- Thread* thread = Thread::Current();
- Isolate* isolate = thread->isolate();
- StackZone stack_zone(thread);
- LongJumpScope jump;
- if (setjmp(*jump.Set()) == 0) {
- const String& uri = String::Handle(Symbols::New("dynamically-added"));
- const Script& script = Script::Handle(
- Script::New(uri, source, RawScript::kSourceTag));
- const Library& owning_library = Library::Handle(owning_class.library());
- const String& private_key = String::Handle(owning_library.private_key());
- script.Tokenize(private_key);
- const intptr_t token_pos = 0;
- Parser parser(script, owning_library, token_pos);
- parser.is_top_level_ = true;
- parser.set_current_class(owning_class);
- const String& class_name = String::Handle(owning_class.Name());
- ClassDesc members(stack_zone.GetZone(),
- owning_class,
- class_name,
- false, /* is_interface */
- token_pos);
- const intptr_t metadata_pos = parser.SkipMetadata();
- parser.ParseClassMemberDefinition(&members, metadata_pos);
- ASSERT(members.functions().length() == 1);
- const Function& func = *members.functions().At(0);
- func.set_eval_script(script);
- ParsedFunction* parsed_function = new ParsedFunction(thread, func);
- Parser::ParseFunction(parsed_function);
- return func.raw();
- } else {
- const Error& error = Error::Handle(isolate->object_store()->sticky_error());
- isolate->object_store()->clear_sticky_error();
- return error.raw();
- }
- UNREACHABLE();
- return Object::null();
-}
-
-
SequenceNode* Parser::ParseStaticFinalGetter(const Function& func) {
TRACE_PARSER("ParseStaticFinalGetter");
ParamList params;
@@ -4650,7 +4608,7 @@ void Parser::ParseClassDeclaration(const GrowableObjectArray& pending_classes,
void Parser::ParseClassDefinition(const Class& cls) {
TRACE_PARSER("ParseClassDefinition");
- INC_STAT(I, num_classes_compiled, 1);
+ INC_STAT(thread(), num_classes_parsed, 1);
set_current_class(cls);
is_top_level_ = true;
String& class_name = String::Handle(Z, cls.Name());
@@ -4710,7 +4668,7 @@ void Parser::ParseClassDefinition(const Class& cls) {
void Parser::ParseEnumDefinition(const Class& cls) {
TRACE_PARSER("ParseEnumDefinition");
- INC_STAT(I, num_classes_compiled, 1);
+ INC_STAT(thread(), num_classes_parsed, 1);
SkipMetadata();
ExpectToken(Token::kENUM);
@@ -7688,6 +7646,7 @@ AstNode* Parser::ParseFunctionStatement(bool is_literal) {
// Parse the local function.
SequenceNode* statements = Parser::ParseFunc(function);
+ INC_STAT(thread(), num_functions_parsed, 1);
// 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
« no previous file with comments | « runtime/vm/parser.h ('k') | runtime/vm/scanner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698