1.1 --- a/src/cpu/x86/vm/assembler_x86_64.hpp Thu Jun 05 15:57:56 2008 -0700 1.2 +++ b/src/cpu/x86/vm/assembler_x86_64.hpp Thu Jun 12 13:50:55 2008 -0700 1.3 @@ -502,7 +502,12 @@ 1.4 imm64_operand = 0, // embedded 64-bit immediate operand 1.5 disp32_operand = 1, // embedded 32-bit displacement 1.6 call32_operand = 2, // embedded 32-bit self-relative displacement 1.7 +#ifndef AMD64 1.8 _WhichOperand_limit = 3 1.9 +#else 1.10 + narrow_oop_operand = 3, // embedded 32-bit immediate narrow oop 1.11 + _WhichOperand_limit = 4 1.12 +#endif 1.13 }; 1.14 1.15 public: 1.16 @@ -1035,7 +1040,7 @@ 1.17 // is needed if the offset is within a certain range (0 <= offset <= 1.18 // page_size). 1.19 void null_check(Register reg, int offset = -1); 1.20 - static bool needs_explicit_null_check(int offset); 1.21 + static bool needs_explicit_null_check(intptr_t offset); 1.22 1.23 // Required platform-specific helpers for Label::patch_instructions. 1.24 // They _shadow_ the declarations in AbstractAssembler, which are undefined. 1.25 @@ -1116,6 +1121,9 @@ 1.26 // oop manipulations 1.27 void load_klass(Register dst, Register src); 1.28 void store_klass(Register dst, Register src); 1.29 + void store_klass_gap(Register dst, Register src); 1.30 + 1.31 + void load_prototype_header(Register dst, Register src); 1.32 1.33 void load_heap_oop(Register dst, Address src); 1.34 void store_heap_oop(Address dst, Register src); 1.35 @@ -1126,6 +1134,8 @@ 1.36 void encode_heap_oop_not_null(Register dst, Register src); 1.37 void decode_heap_oop_not_null(Register dst, Register src); 1.38 1.39 + void set_narrow_oop(Register dst, jobject obj); 1.40 + 1.41 // Stack frame creation/removal 1.42 void enter(); 1.43 void leave();