| Index: src/assembler-ia32.h
|
| ===================================================================
|
| --- src/assembler-ia32.h (revision 830)
|
| +++ src/assembler-ia32.h (working copy)
|
| @@ -118,8 +118,8 @@
|
| not_equal = 5,
|
| below_equal = 6,
|
| above = 7,
|
| - sign = 8,
|
| - not_sign = 9,
|
| + negative = 8,
|
| + positive = 9,
|
| parity_even = 10,
|
| parity_odd = 11,
|
| less = 12,
|
| @@ -128,10 +128,12 @@
|
| greater = 15,
|
|
|
| // aliases
|
| + carry = below,
|
| + not_carry = above_equal,
|
| zero = equal,
|
| not_zero = not_equal,
|
| - negative = sign,
|
| - positive = not_sign
|
| + sign = negative,
|
| + not_sign = positive
|
| };
|
|
|
|
|
| @@ -283,13 +285,14 @@
|
| //
|
| // Displacement _data field layout
|
| //
|
| -// |31.....1| ......0|
|
| +// |31.....2|1......0|
|
| // [ next | type |
|
|
|
| class Displacement BASE_EMBEDDED {
|
| public:
|
| enum Type {
|
| UNCONDITIONAL_JUMP,
|
| + CODE_RELATIVE,
|
| OTHER
|
| };
|
|
|
| @@ -313,8 +316,8 @@
|
| private:
|
| int data_;
|
|
|
| - class TypeField: public BitField<Type, 0, 1> {};
|
| - class NextField: public BitField<int, 1, 32-1> {};
|
| + class TypeField: public BitField<Type, 0, 2> {};
|
| + class NextField: public BitField<int, 2, 32-2> {};
|
|
|
| void init(Label* L, Type type);
|
| };
|
| @@ -440,10 +443,14 @@
|
| void push(const Immediate& x);
|
| void push(Register src);
|
| void push(const Operand& src);
|
| + void push(Label* label, RelocInfo::Mode relocation_mode);
|
|
|
| void pop(Register dst);
|
| void pop(const Operand& dst);
|
|
|
| + void enter(const Immediate& size);
|
| + void leave();
|
| +
|
| // Moves
|
| void mov_b(Register dst, const Operand& src);
|
| void mov_b(const Operand& dst, int8_t imm8);
|
| @@ -491,6 +498,9 @@
|
| void cmp(Register reg, const Operand& op);
|
| void cmp(const Operand& op, const Immediate& imm);
|
|
|
| + void rep_cmpsb();
|
| + void rep_cmpsw();
|
| +
|
| void dec_b(Register dst);
|
|
|
| void dec(Register dst);
|
| @@ -535,6 +545,7 @@
|
|
|
| void shr(Register dst, uint8_t imm8);
|
| void shr(Register dst);
|
| + void shr_cl(Register dst);
|
|
|
| void sub(const Operand& dst, const Immediate& x);
|
| void sub(Register dst, const Operand& src);
|
| @@ -550,6 +561,7 @@
|
| void xor_(const Operand& dst, const Immediate& x);
|
|
|
| // Bit operations.
|
| + void bt(const Operand& dst, Register src);
|
| void bts(const Operand& dst, Register src);
|
|
|
| // Miscellaneous
|
| @@ -558,7 +570,6 @@
|
| void nop();
|
| void rdtsc();
|
| void ret(int imm16);
|
| - void leave();
|
|
|
| // Label operations & relative jumps (PPUM Appendix D)
|
| //
|
| @@ -748,6 +759,7 @@
|
| inline void emit(Handle<Object> handle);
|
| inline void emit(uint32_t x, RelocInfo::Mode rmode);
|
| inline void emit(const Immediate& x);
|
| + inline void emit_w(const Immediate& x);
|
|
|
| // instruction generation
|
| void emit_arith_b(int op1, int op2, Register dst, int imm8);
|
|
|