< prev index next >
src/share/vm/runtime/sharedRuntime.hpp
Print this page
*** 35,86 ****
class AdapterHandlerEntry;
class AdapterHandlerTable;
class AdapterFingerPrint;
class vframeStream;
!
! // Used for adapter generation. One SigEntry is used per element of
! // the signature of the method. Value type arguments are treated
! // specially. See comment for collect_fields().
! class SigEntry VALUE_OBJ_CLASS_SPEC {
! public:
! BasicType _bt;
! int _offset;
!
! SigEntry()
! : _bt(T_ILLEGAL), _offset(-1) {
! }
! SigEntry(BasicType bt, int offset)
! : _bt(bt), _offset(offset) {}
!
! SigEntry(BasicType bt)
! : _bt(bt), _offset(-1) {}
!
! static int compare(SigEntry* e1, SigEntry* e2) {
! if (e1->_offset != e2->_offset) {
! return e1->_offset - e2->_offset;
! }
! assert((e1->_bt == T_LONG && (e2->_bt == T_LONG || e2->_bt == T_VOID)) ||
! (e1->_bt == T_DOUBLE && (e2->_bt == T_DOUBLE || e2->_bt == T_VOID)) ||
! e1->_bt == T_VALUETYPE || e2->_bt == T_VALUETYPE || e1->_bt == T_VOID || e2->_bt == T_VOID, "bad bt");
! if (e1->_bt == e2->_bt) {
! assert(e1->_bt == T_VALUETYPE || e1->_bt == T_VOID, "only ones with duplicate offsets");
! return 0;
! }
! if (e1->_bt == T_VOID ||
! e2->_bt == T_VALUETYPE) {
! return 1;
! }
! if (e1->_bt == T_VALUETYPE ||
! e2->_bt == T_VOID) {
! return -1;
! }
! ShouldNotReachHere();
! return 0;
! }
! };
!
// Runtime is the base class for various runtime interfaces
// (InterpreterRuntime, CompilerRuntime, etc.). It provides
// shared functionality such as exception forwarding (C++ to
// Java exceptions), locking/unlocking mechanisms, statistical
--- 35,45 ----
class AdapterHandlerEntry;
class AdapterHandlerTable;
class AdapterFingerPrint;
class vframeStream;
! class SigEntry;
// Runtime is the base class for various runtime interfaces
// (InterpreterRuntime, CompilerRuntime, etc.). It provides
// shared functionality such as exception forwarding (C++ to
// Java exceptions), locking/unlocking mechanisms, statistical
*** 121,131 ****
private:
enum { POLL_AT_RETURN, POLL_AT_LOOP, POLL_AT_VECTOR_LOOP };
static SafepointBlob* generate_handler_blob(address call_ptr, int poll_type);
static RuntimeStub* generate_resolve_blob(address destination, const char* name);
!
public:
static void generate_stubs(void);
// max bytes for each dtrace string parameter
enum { max_dtrace_string_size = 256 };
--- 80,90 ----
private:
enum { POLL_AT_RETURN, POLL_AT_LOOP, POLL_AT_VECTOR_LOOP };
static SafepointBlob* generate_handler_blob(address call_ptr, int poll_type);
static RuntimeStub* generate_resolve_blob(address destination, const char* name);
! static RuntimeStub* generate_return_value_blob(address destination, const char* name);
public:
static void generate_stubs(void);
// max bytes for each dtrace string parameter
enum { max_dtrace_string_size = 256 };
*** 413,422 ****
--- 372,384 ----
// 4-bytes higher. So for sparc because the register window save area is at
// the bottom of the frame the first 16 words will be skipped and SharedInfo::stack0
// will be just above it. (
// return value is the maximum number of VMReg stack slots the convention will use.
static int java_calling_convention(const BasicType* sig_bt, VMRegPair* regs, int total_args_passed, int is_outgoing);
+ static int java_return_convention(const BasicType* sig_bt, VMRegPair* regs, int total_args_passed);
+ static const uint java_return_convention_max_int;
+ static const uint java_return_convention_max_float;
static void check_member_name_argument_is_last_argument(const methodHandle& method,
const BasicType* sig_bt,
const VMRegPair* regs) NOT_DEBUG_RETURN;
*** 541,550 ****
--- 503,515 ----
// Resolving of calls
static address resolve_static_call_C (JavaThread *thread);
static address resolve_virtual_call_C (JavaThread *thread);
static address resolve_opt_virtual_call_C(JavaThread *thread);
+ static void load_value_type_fields_in_regs(JavaThread *thread, oopDesc* res);
+ static void store_value_type_fields_to_buf(JavaThread *thread, intptr_t res);
+
// arraycopy, the non-leaf version. (See StubRoutines for all the leaf calls.)
static void slow_arraycopy_C(oopDesc* src, jint src_pos,
oopDesc* dest, jint dest_pos,
jint length, JavaThread* thread);
< prev index next >