778 // Stores
779 void store_check(Register obj); // store check for obj - register is destroyed afterwards
780 void store_check(Register obj, Address dst); // same as above, dst is exact store location (reg. is destroyed)
781
782 void resolve_jobject(Register value, Register thread, Register tmp);
783
784 // oop manipulations
785 void load_klass(Register dst, Register src);
786 void store_klass(Register dst, Register src);
787 void cmp_klass(Register oop, Register trial_klass, Register tmp);
788
789 void resolve_oop_handle(Register result, Register tmp = r5);
790 void load_mirror(Register dst, Register method, Register tmp = r5);
791
792 void access_load_at(BasicType type, DecoratorSet decorators, Register dst, Address src,
793 Register tmp1, Register tmp_thread);
794
795 void access_store_at(BasicType type, DecoratorSet decorators, Address dst, Register src,
796 Register tmp1, Register tmp_thread);
797
798 void load_heap_oop(Register dst, Address src, Register tmp1 = noreg,
799 Register thread_tmp = noreg, DecoratorSet decorators = 0);
800
801 void load_heap_oop_not_null(Register dst, Address src, Register tmp1 = noreg,
802 Register thread_tmp = noreg, DecoratorSet decorators = 0);
803 void store_heap_oop(Address dst, Register src, Register tmp1 = noreg,
804 Register tmp_thread = noreg, DecoratorSet decorators = 0);
805
806 // currently unimplemented
807 // Used for storing NULL. All other oop constants should be
808 // stored using routines that take a jobject.
809 void store_heap_oop_null(Address dst);
810
811 void load_prototype_header(Register dst, Register src);
812
813 void store_klass_gap(Register dst, Register src);
814
815 // This dummy is to prevent a call to store_heap_oop from
816 // converting a zero (like NULL) into a Register by giving
817 // the compiler two choices it can't resolve
|
778 // Stores
779 void store_check(Register obj); // store check for obj - register is destroyed afterwards
780 void store_check(Register obj, Address dst); // same as above, dst is exact store location (reg. is destroyed)
781
782 void resolve_jobject(Register value, Register thread, Register tmp);
783
784 // oop manipulations
785 void load_klass(Register dst, Register src);
786 void store_klass(Register dst, Register src);
787 void cmp_klass(Register oop, Register trial_klass, Register tmp);
788
789 void resolve_oop_handle(Register result, Register tmp = r5);
790 void load_mirror(Register dst, Register method, Register tmp = r5);
791
792 void access_load_at(BasicType type, DecoratorSet decorators, Register dst, Address src,
793 Register tmp1, Register tmp_thread);
794
795 void access_store_at(BasicType type, DecoratorSet decorators, Address dst, Register src,
796 Register tmp1, Register tmp_thread);
797
798 // Resolves obj for read access. Result is placed in the same register.
799 // All other registers are preserved.
800 void resolve_for_read(DecoratorSet decorators, Register obj);
801
802 // Resolves obj for write access. Result is placed in the same register.
803 // All other registers are preserved.
804 void resolve_for_write(DecoratorSet decorators, Register obj);
805
806 void load_heap_oop(Register dst, Address src, Register tmp1 = noreg,
807 Register thread_tmp = noreg, DecoratorSet decorators = 0);
808
809 void load_heap_oop_not_null(Register dst, Address src, Register tmp1 = noreg,
810 Register thread_tmp = noreg, DecoratorSet decorators = 0);
811 void store_heap_oop(Address dst, Register src, Register tmp1 = noreg,
812 Register tmp_thread = noreg, DecoratorSet decorators = 0);
813
814 // currently unimplemented
815 // Used for storing NULL. All other oop constants should be
816 // stored using routines that take a jobject.
817 void store_heap_oop_null(Address dst);
818
819 void load_prototype_header(Register dst, Register src);
820
821 void store_klass_gap(Register dst, Register src);
822
823 // This dummy is to prevent a call to store_heap_oop from
824 // converting a zero (like NULL) into a Register by giving
825 // the compiler two choices it can't resolve
|