774 jobject get_jobject() const { return _value.h; }
775 JavaCallValue* get_value_addr() { return &_value; }
776 BasicType get_type() const { return _type; }
777
778 void set_jfloat(jfloat f) { _value.f = f;}
779 void set_jdouble(jdouble d) { _value.d = d;}
780 void set_jint(jint i) { _value.i = i;}
781 void set_jlong(jlong l) { _value.l = l;}
782 void set_jobject(jobject h) { _value.h = h;}
783 void set_type(BasicType t) { _type = t; }
784
785 jboolean get_jboolean() const { return (jboolean) (_value.i);}
786 jbyte get_jbyte() const { return (jbyte) (_value.i);}
787 jchar get_jchar() const { return (jchar) (_value.i);}
788 jshort get_jshort() const { return (jshort) (_value.i);}
789
790 };
791
792
793 #define STACK_BIAS 0
794 // V9 Sparc CPU's running in 64 Bit mode use a stack bias of 7ff
795 // in order to extend the reach of the stack pointer.
796 #if defined(SPARC) && defined(_LP64)
797 #undef STACK_BIAS
798 #define STACK_BIAS 0x7ff
799 #endif
800
801
802 // TosState describes the top-of-stack state before and after the execution of
803 // a bytecode or method. The top-of-stack value may be cached in one or more CPU
804 // registers. The TosState corresponds to the 'machine representation' of this cached
805 // value. There's 4 states corresponding to the JAVA types int, long, float & double
806 // as well as a 5th state in case the top-of-stack value is actually on the top
807 // of stack (in memory) and thus not cached. The atos state corresponds to the itos
808 // state when it comes to machine representation but is used separately for (oop)
809 // type specific operations (e.g. verification code).
810
811 enum TosState { // describes the tos cache contents
812 btos = 0, // byte, bool tos cached
813 ztos = 1, // byte, bool tos cached
814 ctos = 2, // char tos cached
815 stos = 3, // short tos cached
816 itos = 4, // int tos cached
817 ltos = 5, // long tos cached
818 ftos = 6, // float tos cached
819 dtos = 7, // double tos cached
|
774 jobject get_jobject() const { return _value.h; }
775 JavaCallValue* get_value_addr() { return &_value; }
776 BasicType get_type() const { return _type; }
777
778 void set_jfloat(jfloat f) { _value.f = f;}
779 void set_jdouble(jdouble d) { _value.d = d;}
780 void set_jint(jint i) { _value.i = i;}
781 void set_jlong(jlong l) { _value.l = l;}
782 void set_jobject(jobject h) { _value.h = h;}
783 void set_type(BasicType t) { _type = t; }
784
785 jboolean get_jboolean() const { return (jboolean) (_value.i);}
786 jbyte get_jbyte() const { return (jbyte) (_value.i);}
787 jchar get_jchar() const { return (jchar) (_value.i);}
788 jshort get_jshort() const { return (jshort) (_value.i);}
789
790 };
791
792
793 #define STACK_BIAS 0
794
795
796 // TosState describes the top-of-stack state before and after the execution of
797 // a bytecode or method. The top-of-stack value may be cached in one or more CPU
798 // registers. The TosState corresponds to the 'machine representation' of this cached
799 // value. There's 4 states corresponding to the JAVA types int, long, float & double
800 // as well as a 5th state in case the top-of-stack value is actually on the top
801 // of stack (in memory) and thus not cached. The atos state corresponds to the itos
802 // state when it comes to machine representation but is used separately for (oop)
803 // type specific operations (e.g. verification code).
804
805 enum TosState { // describes the tos cache contents
806 btos = 0, // byte, bool tos cached
807 ztos = 1, // byte, bool tos cached
808 ctos = 2, // char tos cached
809 stos = 3, // short tos cached
810 itos = 4, // int tos cached
811 ltos = 5, // long tos cached
812 ftos = 6, // float tos cached
813 dtos = 7, // double tos cached
|