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); |