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

Unified Diff: src/compiler/pipeline.cc

Issue 1297203002: Add CompileInfo::GetDebugName() (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@interpreter_immed_bytecodes
Patch Set: Add CompilationInfo::ShouldEnsureSpaceForLazyDeopt() Created 5 years, 4 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
Index: src/compiler/pipeline.cc
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc
index a528cceea523644bdb575f61f76958bce3e6fdcd..a39d30f770ac2718694e8d8c6f80b37c0d504fcc 100644
--- a/src/compiler/pipeline.cc
+++ b/src/compiler/pipeline.cc
@@ -350,7 +350,14 @@ void TraceSchedule(CompilationInfo* info, Schedule* schedule) {
base::SmartArrayPointer<char> GetDebugName(CompilationInfo* info) {
- if (info->code_stub() != NULL) {
+ if (info->IsBytecodeHandler()) {
+ const char* bytecode_name =
+ interpreter::Bytecodes::ToString(info->bytecode());
+ size_t len = strlen(bytecode_name) + 1;
+ base::SmartArrayPointer<char> name(new char[len]);
+ memcpy(name.get(), bytecode_name, len);
+ return name;
+ } else if (info->code_stub() != NULL) {
CodeStub::Major major_key = info->code_stub()->MajorKey();
const char* major_name = CodeStub::MajorName(major_key, false);
size_t len = strlen(major_name) + 1;
@@ -489,7 +496,7 @@ struct GraphBuilderPhase {
AstGraphBuilderWithPositions graph_builder(
temp_zone, data->info(), data->jsgraph(), data->loop_assignment(),
data->js_type_feedback(), data->source_positions());
- bool stack_check = !data->info()->IsStub();
+ bool stack_check = !data->info()->IsStub() && !data->info()->IsStub();
if (!graph_builder.CreateGraph(stack_check)) {
data->set_compilation_failed();
}
@@ -1145,12 +1152,20 @@ Handle<Code> Pipeline::GenerateCode() {
}
+Handle<Code> Pipeline::GenerateCodeForInterpreter(
+ Isolate* isolate, CallDescriptor* call_descriptor, Graph* graph,
+ Schedule* schedule, interpreter::Bytecode bytecode) {
+ CompilationInfo info(bytecode, isolate, graph->zone());
+ return GenerateCodeFromMachineGraph(&info, call_descriptor, graph, schedule);
+}
+
+
Handle<Code> Pipeline::GenerateCodeForTesting(CompilationInfo* info,
Graph* graph,
Schedule* schedule) {
CallDescriptor* call_descriptor =
Linkage::ComputeIncoming(info->zone(), info);
- return GenerateCodeForTesting(info, call_descriptor, graph, schedule);
+ return GenerateCodeFromMachineGraph(info, call_descriptor, graph, schedule);
}
@@ -1160,26 +1175,34 @@ Handle<Code> Pipeline::GenerateCodeForTesting(Isolate* isolate,
Schedule* schedule) {
FakeStubForTesting stub(isolate);
CompilationInfo info(&stub, isolate, graph->zone());
- return GenerateCodeForTesting(&info, call_descriptor, graph, schedule);
+ return GenerateCodeFromMachineGraph(&info, call_descriptor, graph, schedule);
}
-Handle<Code> Pipeline::GenerateCodeForTesting(CompilationInfo* info,
- CallDescriptor* call_descriptor,
- Graph* graph,
- Schedule* schedule) {
+Handle<Code> Pipeline::GenerateCodeFromMachineGraph(
+ CompilationInfo* info, CallDescriptor* call_descriptor, Graph* graph,
+ Schedule* schedule) {
// Construct a pipeline for scheduling and code generation.
ZonePool zone_pool;
PipelineData data(&zone_pool, info, graph, schedule);
base::SmartPointer<PipelineStatistics> pipeline_statistics;
if (FLAG_turbo_stats) {
pipeline_statistics.Reset(new PipelineStatistics(info, &zone_pool));
- pipeline_statistics->BeginPhaseKind("test codegen");
+ pipeline_statistics->BeginPhaseKind("machine graph codegen");
+ }
+ if (FLAG_trace_turbo) {
+ FILE* json_file = OpenVisualizerLogFile(info, NULL, "json", "w+");
+ if (json_file != nullptr) {
+ OFStream json_of(json_file);
+ json_of << "{\"function\":\"" << GetDebugName(info).get()
+ << "\", \"source\":\"\",\n\"phases\":[";
+ fclose(json_file);
+ }
}
Pipeline pipeline(info);
pipeline.data_ = &data;
- if (data.schedule() == nullptr) {
+ if (data.schedule() == nullptr || info->IsBytecodeHandler()) {
// TODO(rossberg): Should this really be untyped?
pipeline.RunPrintAndVerify("Machine", true);
}

Powered by Google App Engine
This is Rietveld 408576698