| Index: src/ia32/lithium-codegen-ia32.h
|
| diff --git a/src/ia32/lithium-codegen-ia32.h b/src/ia32/lithium-codegen-ia32.h
|
| index f4542eecddb4511f032125605c8d572281a1450d..d7718937428eff65ed227cf39377bc4d1bcbe9df 100644
|
| --- a/src/ia32/lithium-codegen-ia32.h
|
| +++ b/src/ia32/lithium-codegen-ia32.h
|
| @@ -38,7 +38,6 @@ class LCodeGen: public LCodeGenBase {
|
| support_aligned_spilled_doubles_(false),
|
| osr_pc_offset_(-1),
|
| frame_is_built_(false),
|
| - x87_stack_(assembler),
|
| safepoints_(info->zone()),
|
| resolver_(this),
|
| expected_safepoint_kind_(Safepoint::kSimple) {
|
| @@ -67,7 +66,6 @@ class LCodeGen: public LCodeGenBase {
|
| Operand ToOperand(LOperand* op) const;
|
| Register ToRegister(LOperand* op) const;
|
| XMMRegister ToDoubleRegister(LOperand* op) const;
|
| - X87Register ToX87Register(LOperand* op) const;
|
|
|
| bool IsInteger32(LConstantOperand* op) const;
|
| bool IsSmi(LConstantOperand* op) const;
|
| @@ -76,36 +74,6 @@ class LCodeGen: public LCodeGenBase {
|
| }
|
| double ToDouble(LConstantOperand* op) const;
|
|
|
| - // Support for non-sse2 (x87) floating point stack handling.
|
| - // These functions maintain the mapping of physical stack registers to our
|
| - // virtual registers between instructions.
|
| - enum X87OperandType { kX87DoubleOperand, kX87FloatOperand, kX87IntOperand };
|
| -
|
| - void X87Mov(X87Register reg, Operand src,
|
| - X87OperandType operand = kX87DoubleOperand);
|
| - void X87Mov(Operand src, X87Register reg,
|
| - X87OperandType operand = kX87DoubleOperand);
|
| -
|
| - void X87PrepareBinaryOp(
|
| - X87Register left, X87Register right, X87Register result);
|
| -
|
| - void X87LoadForUsage(X87Register reg);
|
| - void X87LoadForUsage(X87Register reg1, X87Register reg2);
|
| - void X87PrepareToWrite(X87Register reg) { x87_stack_.PrepareToWrite(reg); }
|
| - void X87CommitWrite(X87Register reg) { x87_stack_.CommitWrite(reg); }
|
| -
|
| - void X87Fxch(X87Register reg, int other_slot = 0) {
|
| - x87_stack_.Fxch(reg, other_slot);
|
| - }
|
| - void X87Free(X87Register reg) {
|
| - x87_stack_.Free(reg);
|
| - }
|
| -
|
| -
|
| - bool X87StackEmpty() {
|
| - return x87_stack_.depth() == 0;
|
| - }
|
| -
|
| Handle<Object> ToHandle(LConstantOperand* op) const;
|
|
|
| // The operand denoting the second word (the one with a higher address) of
|
| @@ -265,7 +233,6 @@ class LCodeGen: public LCodeGenBase {
|
|
|
| Register ToRegister(int index) const;
|
| XMMRegister ToDoubleRegister(int index) const;
|
| - X87Register ToX87Register(int index) const;
|
| int32_t ToRepresentation(LConstantOperand* op, const Representation& r) const;
|
| int32_t ToInteger32(LConstantOperand* op) const;
|
| ExternalReference ToExternalReference(LConstantOperand* op) const;
|
| @@ -313,15 +280,6 @@ class LCodeGen: public LCodeGenBase {
|
| LEnvironment* env,
|
| NumberUntagDMode mode = NUMBER_CANDIDATE_IS_ANY_TAGGED);
|
|
|
| - void EmitNumberUntagDNoSSE2(
|
| - Register input,
|
| - Register temp,
|
| - X87Register res_reg,
|
| - bool allow_undefined_as_nan,
|
| - bool deoptimize_on_minus_zero,
|
| - LEnvironment* env,
|
| - NumberUntagDMode mode = NUMBER_CANDIDATE_IS_ANY_TAGGED);
|
| -
|
| // Emits optimized code for typeof x == "y". Modifies input register.
|
| // Returns the condition on which a final split to
|
| // true and false label should be made, to optimize fallthrough.
|
| @@ -369,12 +327,6 @@ class LCodeGen: public LCodeGenBase {
|
| // register, or a stack slot operand.
|
| void EmitPushTaggedOperand(LOperand* operand);
|
|
|
| - void X87Fld(Operand src, X87OperandType opts);
|
| -
|
| - void EmitFlushX87ForDeopt();
|
| - void FlushX87StackIfNecessary(LInstruction* instr) {
|
| - x87_stack_.FlushIfNecessary(instr, this);
|
| - }
|
| friend class LGapResolver;
|
|
|
| #ifdef _MSC_VER
|
| @@ -397,56 +349,6 @@ class LCodeGen: public LCodeGenBase {
|
| int osr_pc_offset_;
|
| bool frame_is_built_;
|
|
|
| - class X87Stack {
|
| - public:
|
| - explicit X87Stack(MacroAssembler* masm)
|
| - : stack_depth_(0), is_mutable_(true), masm_(masm) { }
|
| - explicit X87Stack(const X87Stack& other)
|
| - : stack_depth_(other.stack_depth_), is_mutable_(false), masm_(masm()) {
|
| - for (int i = 0; i < stack_depth_; i++) {
|
| - stack_[i] = other.stack_[i];
|
| - }
|
| - }
|
| - bool operator==(const X87Stack& other) const {
|
| - if (stack_depth_ != other.stack_depth_) return false;
|
| - for (int i = 0; i < stack_depth_; i++) {
|
| - if (!stack_[i].is(other.stack_[i])) return false;
|
| - }
|
| - return true;
|
| - }
|
| - bool Contains(X87Register reg);
|
| - void Fxch(X87Register reg, int other_slot = 0);
|
| - void Free(X87Register reg);
|
| - void PrepareToWrite(X87Register reg);
|
| - void CommitWrite(X87Register reg);
|
| - void FlushIfNecessary(LInstruction* instr, LCodeGen* cgen);
|
| - void LeavingBlock(int current_block_id, LGoto* goto_instr);
|
| - int depth() const { return stack_depth_; }
|
| - void pop() {
|
| - ASSERT(is_mutable_);
|
| - stack_depth_--;
|
| - }
|
| - void push(X87Register reg) {
|
| - ASSERT(is_mutable_);
|
| - ASSERT(stack_depth_ < X87Register::kNumAllocatableRegisters);
|
| - stack_[stack_depth_] = reg;
|
| - stack_depth_++;
|
| - }
|
| -
|
| - MacroAssembler* masm() const { return masm_; }
|
| - Isolate* isolate() const { return masm_->isolate(); }
|
| -
|
| - private:
|
| - int ArrayIndex(X87Register reg);
|
| - int st2idx(int pos);
|
| -
|
| - X87Register stack_[X87Register::kNumAllocatableRegisters];
|
| - int stack_depth_;
|
| - bool is_mutable_;
|
| - MacroAssembler* masm_;
|
| - };
|
| - X87Stack x87_stack_;
|
| -
|
| // Builder that keeps track of safepoints in the code. The table
|
| // itself is emitted at the end of the generated code.
|
| SafepointTableBuilder safepoints_;
|
| @@ -485,11 +387,10 @@ class LCodeGen: public LCodeGenBase {
|
|
|
| class LDeferredCode : public ZoneObject {
|
| public:
|
| - explicit LDeferredCode(LCodeGen* codegen, const LCodeGen::X87Stack& x87_stack)
|
| + explicit LDeferredCode(LCodeGen* codegen)
|
| : codegen_(codegen),
|
| external_exit_(NULL),
|
| - instruction_index_(codegen->current_instruction_),
|
| - x87_stack_(x87_stack) {
|
| + instruction_index_(codegen->current_instruction_) {
|
| codegen->AddDeferredCode(this);
|
| }
|
|
|
| @@ -502,7 +403,6 @@ class LDeferredCode : public ZoneObject {
|
| Label* exit() { return external_exit_ != NULL ? external_exit_ : &exit_; }
|
| Label* done() { return codegen_->NeedsDeferredFrame() ? &done_ : exit(); }
|
| int instruction_index() const { return instruction_index_; }
|
| - const LCodeGen::X87Stack& x87_stack() const { return x87_stack_; }
|
|
|
| protected:
|
| LCodeGen* codegen() const { return codegen_; }
|
| @@ -515,7 +415,6 @@ class LDeferredCode : public ZoneObject {
|
| Label* external_exit_;
|
| Label done_;
|
| int instruction_index_;
|
| - LCodeGen::X87Stack x87_stack_;
|
| };
|
|
|
| } } // namespace v8::internal
|
|
|