Index: src/compiler.cc |
diff --git a/src/compiler.cc b/src/compiler.cc |
index 7fbbfb17ff5daf7b809e94144a3b35a3f45ba633..354542d56e3f44ff14420659726a56a493499aee 100644 |
--- a/src/compiler.cc |
+++ b/src/compiler.cc |
@@ -727,7 +727,6 @@ static void RecordFunctionCompilation(Logger::LogEventsAndTags tag, |
} |
} |
- |
static bool CompileUnoptimizedCode(CompilationInfo* info) { |
DCHECK(AllowCompilation::IsAllowed(info->isolate())); |
if (!Compiler::Analyze(info->parse_info()) || |
@@ -756,13 +755,39 @@ static bool UseIgnition(CompilationInfo* info) { |
return info->closure()->PassesFilter(FLAG_ignition_filter); |
} |
+static int CodeAndMetadataSize(CompilationInfo* info) { |
+ int size = 0; |
+ if (info->has_bytecode_array()) { |
+ Handle<BytecodeArray> bytecode_array = info->bytecode_array(); |
+ size += bytecode_array->BytecodeArraySize(); |
+ size += bytecode_array->constant_pool()->Size(); |
+ size += bytecode_array->handler_table()->Size(); |
+ size += bytecode_array->source_position_table()->Size(); |
+ } else { |
+ Handle<Code> code = info->code(); |
+ size += code->CodeSize(); |
+ size += code->relocation_info()->Size(); |
+ size += code->deoptimization_data()->Size(); |
+ size += code->handler_table()->Size(); |
+ } |
+ return size; |
+} |
+ |
static bool GenerateBaselineCode(CompilationInfo* info) { |
+ bool success; |
if (FLAG_ignition && UseIgnition(info)) { |
- return interpreter::Interpreter::MakeBytecode(info); |
+ success = interpreter::Interpreter::MakeBytecode(info); |
} else { |
- return FullCodeGenerator::MakeCode(info); |
+ success = FullCodeGenerator::MakeCode(info); |
+ } |
+ if (success) { |
+ Isolate* isolate = info->isolate(); |
+ Counters* counters = isolate->counters(); |
+ counters->total_baseline_code_size()->Increment(CodeAndMetadataSize(info)); |
+ counters->total_baseline_compile_count()->Increment(1); |
} |
+ return success; |
} |