| Index: src/compiler/code-generator.cc
|
| diff --git a/src/compiler/code-generator.cc b/src/compiler/code-generator.cc
|
| index c69e86e0a5367c4a1724b4ecc33fb66e9394d039..dee3b2b3a337f491a555a6bff07ffb5352f79378 100644
|
| --- a/src/compiler/code-generator.cc
|
| +++ b/src/compiler/code-generator.cc
|
| @@ -33,8 +33,10 @@ class CodeGenerator::JumpTable final : public ZoneObject {
|
| size_t const target_count_;
|
| };
|
|
|
| -CodeGenerator::CodeGenerator(Frame* frame, Linkage* linkage,
|
| - InstructionSequence* code, CompilationInfo* info)
|
| +CodeGenerator::CodeGenerator(
|
| + Frame* frame, Linkage* linkage, InstructionSequence* code,
|
| + CompilationInfo* info,
|
| + ZoneVector<trap_handler::ProtectedInstructionData>* protected_instructions)
|
| : frame_access_state_(nullptr),
|
| linkage_(linkage),
|
| code_(code),
|
| @@ -57,7 +59,8 @@ CodeGenerator::CodeGenerator(Frame* frame, Linkage* linkage,
|
| ools_(nullptr),
|
| osr_pc_offset_(-1),
|
| source_position_table_builder_(code->zone(),
|
| - info->SourcePositionRecordingMode()) {
|
| + info->SourcePositionRecordingMode()),
|
| + protected_instructions_(protected_instructions) {
|
| for (int i = 0; i < code->InstructionBlockCount(); ++i) {
|
| new (&labels_[i]) Label;
|
| }
|
| @@ -71,6 +74,15 @@ void CodeGenerator::CreateFrameAccessState(Frame* frame) {
|
| frame_access_state_ = new (code()->zone()) FrameAccessState(frame);
|
| }
|
|
|
| +void CodeGenerator::AddProtectedInstruction(int instr_offset,
|
| + int landing_offset) {
|
| + if (protected_instructions_ != nullptr) {
|
| + trap_handler::ProtectedInstructionData data = {instr_offset,
|
| + landing_offset};
|
| + protected_instructions_->emplace_back(data);
|
| + }
|
| +}
|
| +
|
| Handle<Code> CodeGenerator::GenerateCode() {
|
| CompilationInfo* info = this->info();
|
|
|
|
|