| Index: src/ia32/lithium-codegen-ia32.h
|
| diff --git a/src/ia32/lithium-codegen-ia32.h b/src/ia32/lithium-codegen-ia32.h
|
| index 63d15f4d62f7eae12171e753a6b77e7805762bef..44ddaffcd41ab038c00db70110761f8d9bb5331e 100644
|
| --- a/src/ia32/lithium-codegen-ia32.h
|
| +++ b/src/ia32/lithium-codegen-ia32.h
|
| @@ -55,7 +55,6 @@ class LCodeGen BASE_EMBEDDED {
|
| current_instruction_(-1),
|
| instructions_(chunk->instructions()),
|
| deoptimizations_(4, info->zone()),
|
| - jump_table_(4, info->zone()),
|
| deoptimization_literals_(8, info->zone()),
|
| inlined_function_count_(0),
|
| scope_(info->scope()),
|
| @@ -65,7 +64,6 @@ class LCodeGen BASE_EMBEDDED {
|
| dynamic_frame_alignment_(false),
|
| osr_pc_offset_(-1),
|
| last_lazy_deopt_pc_(0),
|
| - frame_is_built_(false),
|
| safepoints_(info->zone()),
|
| resolver_(this),
|
| expected_safepoint_kind_(Safepoint::kSimple) {
|
| @@ -80,20 +78,10 @@ class LCodeGen BASE_EMBEDDED {
|
| Heap* heap() const { return isolate()->heap(); }
|
| Zone* zone() const { return zone_; }
|
|
|
| - bool NeedsEagerFrame() const {
|
| - return GetStackSlotCount() > 0 ||
|
| - info()->is_non_deferred_calling() ||
|
| - !info()->IsStub();
|
| - }
|
| - bool NeedsDeferredFrame() const {
|
| - return !NeedsEagerFrame() && info()->is_deferred_calling();
|
| - }
|
| -
|
| // Support for converting LOperands to assembler types.
|
| Operand ToOperand(LOperand* op) const;
|
| Register ToRegister(LOperand* op) const;
|
| XMMRegister ToDoubleRegister(LOperand* op) const;
|
| - bool IsX87TopOfStack(LOperand* op) const;
|
|
|
| bool IsInteger32(LConstantOperand* op) const;
|
| Immediate ToInteger32Immediate(LOperand* op) const {
|
| @@ -102,9 +90,6 @@ class LCodeGen BASE_EMBEDDED {
|
|
|
| Handle<Object> ToHandle(LConstantOperand* op) const;
|
|
|
| - // A utility for instructions that return floating point values on X87.
|
| - void HandleX87FPReturnValue(LInstruction* instr);
|
| -
|
| // The operand denoting the second word (the one with a higher address) of
|
| // a double stack slot.
|
| Operand HighOperand(LOperand* op);
|
| @@ -137,7 +122,7 @@ class LCodeGen BASE_EMBEDDED {
|
| Label* map_check);
|
|
|
| void DoCheckMapCommon(Register reg, Handle<Map> map,
|
| - CompareMapMode mode, LInstruction* instr);
|
| + CompareMapMode mode, LEnvironment* env);
|
|
|
| // Parallel move support.
|
| void DoParallelMove(LParallelMove* move);
|
| @@ -187,7 +172,7 @@ class LCodeGen BASE_EMBEDDED {
|
| Register temporary2);
|
|
|
| int GetStackSlotCount() const { return chunk()->spill_slot_count(); }
|
| - int GetParameterCount() const { return info()->num_parameters(); }
|
| + int GetParameterCount() const { return scope()->num_parameters(); }
|
|
|
| void Abort(const char* reason);
|
| void Comment(const char* format, ...);
|
| @@ -199,7 +184,9 @@ class LCodeGen BASE_EMBEDDED {
|
| bool GeneratePrologue();
|
| bool GenerateBody();
|
| bool GenerateDeferredCode();
|
| - bool GenerateJumpTable();
|
| + // Pad the reloc info to ensure that we have enough space to patch during
|
| + // deoptimization.
|
| + bool GenerateRelocPadding();
|
| bool GenerateSafepointTable();
|
|
|
| enum SafepointMode {
|
| @@ -369,23 +356,10 @@ class LCodeGen BASE_EMBEDDED {
|
| MacroAssembler* const masm_;
|
| CompilationInfo* const info_;
|
|
|
| - struct JumpTableEntry {
|
| - inline JumpTableEntry(Address entry, bool frame, bool is_lazy)
|
| - : label(),
|
| - address(entry),
|
| - needs_frame(frame),
|
| - is_lazy_deopt(is_lazy) { }
|
| - Label label;
|
| - Address address;
|
| - bool needs_frame;
|
| - bool is_lazy_deopt;
|
| - };
|
| -
|
| int current_block_;
|
| int current_instruction_;
|
| const ZoneList<LInstruction*>* instructions_;
|
| ZoneList<LEnvironment*> deoptimizations_;
|
| - ZoneList<JumpTableEntry> jump_table_;
|
| ZoneList<Handle<Object> > deoptimization_literals_;
|
| int inlined_function_count_;
|
| Scope* const scope_;
|
| @@ -395,7 +369,6 @@ class LCodeGen BASE_EMBEDDED {
|
| bool dynamic_frame_alignment_;
|
| int osr_pc_offset_;
|
| int last_lazy_deopt_pc_;
|
| - bool frame_is_built_;
|
|
|
| // Builder that keeps track of safepoints in the code. The table
|
| // itself is emitted at the end of the generated code.
|
| @@ -413,7 +386,6 @@ class LCodeGen BASE_EMBEDDED {
|
| ASSERT(codegen_->expected_safepoint_kind_ == Safepoint::kSimple);
|
| codegen_->masm_->PushSafepointRegisters();
|
| codegen_->expected_safepoint_kind_ = Safepoint::kWithRegisters;
|
| - ASSERT(codegen_->info()->is_calling());
|
| }
|
|
|
| ~PushSafepointRegistersScope() {
|
|
|