| Index: src/compiler/wasm-compiler.cc
|
| diff --git a/src/compiler/wasm-compiler.cc b/src/compiler/wasm-compiler.cc
|
| index eaa5b6fec6e2202b476c299589bb5a6863e24c94..fc20b77aa602a29fdf393020535383309a84103c 100644
|
| --- a/src/compiler/wasm-compiler.cc
|
| +++ b/src/compiler/wasm-compiler.cc
|
| @@ -3430,7 +3430,8 @@ void WasmCompilationUnit::ExecuteCompilation() {
|
| module_env_->GetI32WasmCallDescriptor(&compilation_zone_, descriptor);
|
| }
|
| job_.reset(Pipeline::NewWasmCompilationJob(&info_, jsgraph_->graph(),
|
| - descriptor, source_positions));
|
| + descriptor, source_positions,
|
| + &protected_instructions_));
|
| ok_ = job_->ExecuteJob() == CompilationJob::SUCCEEDED;
|
| // TODO(bradnelson): Improve histogram handling of size_t.
|
| // TODO(ahaas): The counters are not thread-safe at the moment.
|
| @@ -3490,9 +3491,26 @@ Handle<Code> WasmCompilationUnit::FinishCompilation() {
|
| compile_ms);
|
| }
|
|
|
| + Handle<FixedArray> protected_instructions = PackProtectedInstructions();
|
| + code->set_protected_instructions(*protected_instructions);
|
| +
|
| return code;
|
| }
|
|
|
| +Handle<FixedArray> WasmCompilationUnit::PackProtectedInstructions() const {
|
| + const int num_instructions = static_cast<int>(protected_instructions_.size());
|
| + Handle<FixedArray> fn_protected = isolate_->factory()->NewFixedArray(
|
| + num_instructions * wasm::kTrapDataSize, TENURED);
|
| + for (unsigned i = 0; i < protected_instructions_.size(); ++i) {
|
| + const ProtectedInstructionData& instruction = protected_instructions_[i];
|
| + fn_protected->set(wasm::kTrapDataSize * i + wasm::kTrapCodeOffset,
|
| + Smi::FromInt(instruction.instr_offset));
|
| + fn_protected->set(wasm::kTrapDataSize * i + wasm::kTrapLandingOffset,
|
| + Smi::FromInt(instruction.landing_offset));
|
| + }
|
| + return fn_protected;
|
| +}
|
| +
|
| } // namespace compiler
|
| } // namespace internal
|
| } // namespace v8
|
|
|