Index: src/compiler/pipeline.cc |
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc |
index 6714b26937850822a10ccf5e13d243cb7da9af25..fd7ed95b6a725bf693fa9eb05b509b2fd66db7cd 100644 |
--- a/src/compiler/pipeline.cc |
+++ b/src/compiler/pipeline.cc |
@@ -77,6 +77,7 @@ |
#include "src/register-configuration.h" |
#include "src/type-info.h" |
#include "src/utils.h" |
+#include "src/wasm/wasm-module.h" |
namespace v8 { |
namespace internal { |
@@ -115,7 +116,8 @@ class PipelineData { |
// For WASM compile entry point. |
PipelineData(ZoneStats* zone_stats, CompilationInfo* info, Graph* graph, |
- SourcePositionTable* source_positions) |
+ SourcePositionTable* source_positions, |
+ ProtectedInstructionList* protected_instructions) |
: isolate_(info->isolate()), |
info_(info), |
debug_name_(info_->GetDebugName()), |
@@ -126,7 +128,8 @@ class PipelineData { |
instruction_zone_scope_(zone_stats_, ZONE_NAME), |
instruction_zone_(instruction_zone_scope_.zone()), |
register_allocation_zone_scope_(zone_stats_, ZONE_NAME), |
- register_allocation_zone_(register_allocation_zone_scope_.zone()) {} |
+ register_allocation_zone_(register_allocation_zone_scope_.zone()), |
+ protected_instructions_(protected_instructions) {} |
// For machine graph testing entry point. |
PipelineData(ZoneStats* zone_stats, CompilationInfo* info, Graph* graph, |
@@ -233,6 +236,10 @@ class PipelineData { |
source_position_output_ = source_position_output; |
} |
+ ProtectedInstructionList* protected_instructions() const { |
+ return protected_instructions_; |
+ } |
+ |
void DeleteGraphZone() { |
if (graph_zone_ == nullptr) return; |
graph_zone_scope_.Destroy(); |
@@ -355,6 +362,8 @@ class PipelineData { |
// Source position output for --trace-turbo. |
std::string source_position_output_; |
+ ProtectedInstructionList* protected_instructions_ = nullptr; |
+ |
DISALLOW_COPY_AND_ASSIGN(PipelineData); |
}; |
@@ -614,11 +623,12 @@ class PipelineWasmCompilationJob final : public CompilationJob { |
public: |
explicit PipelineWasmCompilationJob(CompilationInfo* info, Graph* graph, |
CallDescriptor* descriptor, |
- SourcePositionTable* source_positions) |
+ SourcePositionTable* source_positions, |
+ ProtectedInstructionList* protected_insts) |
: CompilationJob(info->isolate(), info, "TurboFan", |
State::kReadyToExecute), |
zone_stats_(info->isolate()->allocator()), |
- data_(&zone_stats_, info, graph, source_positions), |
+ data_(&zone_stats_, info, graph, source_positions, protected_insts), |
pipeline_(&data_), |
linkage_(descriptor) {} |
@@ -1404,7 +1414,7 @@ struct GenerateCodePhase { |
void Run(PipelineData* data, Zone* temp_zone, Linkage* linkage) { |
CodeGenerator generator(data->frame(), linkage, data->sequence(), |
- data->info()); |
+ data->info(), data->protected_instructions()); |
data->set_code(generator.GenerateCode()); |
} |
}; |
@@ -1730,9 +1740,10 @@ CompilationJob* Pipeline::NewCompilationJob(Handle<JSFunction> function) { |
// static |
CompilationJob* Pipeline::NewWasmCompilationJob( |
CompilationInfo* info, Graph* graph, CallDescriptor* descriptor, |
- SourcePositionTable* source_positions) { |
- return new PipelineWasmCompilationJob(info, graph, descriptor, |
- source_positions); |
+ SourcePositionTable* source_positions, |
+ ProtectedInstructionList* protected_instructions) { |
+ return new PipelineWasmCompilationJob( |
+ info, graph, descriptor, source_positions, protected_instructions); |
} |
bool Pipeline::AllocateRegistersForTesting(const RegisterConfiguration* config, |