src/cpu/x86/vm/assembler_x86_64.hpp

changeset 779
6aae2f9d0294
parent 777
37f87013dfd8
parent 617
44abbb0d4c18
child 791
1ee8caae33af
     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();

mercurial