< prev index next >

src/hotspot/share/prims/foreignGlobals.cpp

Print this page

 47   VMStorage storage = _locs[loc];
 48   assert(storage.is_valid(), "not set");
 49   return storage;
 50 }
 51 
 52 VMStorage StubLocations::get(VMStorage placeholder) const {
 53   assert(placeholder.type() == StorageType::PLACEHOLDER, "must be");
 54   return get(placeholder.index());
 55 }
 56 
 57 int StubLocations::data_offset(uint32_t loc) const {
 58   VMStorage storage = get(loc);
 59   assert(storage.type() == StorageType::FRAME_DATA, "must be");
 60   return storage.offset();
 61 }
 62 
 63 #define FOREIGN_ABI "jdk/internal/foreign/abi/"
 64 
 65 const CallRegs ForeignGlobals::parse_call_regs(jobject jconv) {
 66   oop conv_oop = JNIHandles::resolve_non_null(jconv);
 67   objArrayOop arg_regs_oop = jdk_internal_foreign_abi_CallConv::argRegs(conv_oop);
 68   objArrayOop ret_regs_oop = jdk_internal_foreign_abi_CallConv::retRegs(conv_oop);
 69   int num_args = arg_regs_oop->length();
 70   int num_rets = ret_regs_oop->length();
 71   CallRegs result(num_args, num_rets);
 72 
 73   for (int i = 0; i < num_args; i++) {
 74     result._arg_regs.push(parse_vmstorage(arg_regs_oop->obj_at(i)));
 75   }
 76 
 77   for (int i = 0; i < num_rets; i++) {
 78     result._ret_regs.push(parse_vmstorage(ret_regs_oop->obj_at(i)));
 79   }
 80 
 81   return result;
 82 }
 83 
 84 VMStorage ForeignGlobals::parse_vmstorage(oop storage) {
 85   jbyte type = jdk_internal_foreign_abi_VMStorage::type(storage);
 86   jshort segment_mask_or_size = jdk_internal_foreign_abi_VMStorage::segment_mask_or_size(storage);
 87   jint index_or_offset = jdk_internal_foreign_abi_VMStorage::index_or_offset(storage);
 88 

 47   VMStorage storage = _locs[loc];
 48   assert(storage.is_valid(), "not set");
 49   return storage;
 50 }
 51 
 52 VMStorage StubLocations::get(VMStorage placeholder) const {
 53   assert(placeholder.type() == StorageType::PLACEHOLDER, "must be");
 54   return get(placeholder.index());
 55 }
 56 
 57 int StubLocations::data_offset(uint32_t loc) const {
 58   VMStorage storage = get(loc);
 59   assert(storage.type() == StorageType::FRAME_DATA, "must be");
 60   return storage.offset();
 61 }
 62 
 63 #define FOREIGN_ABI "jdk/internal/foreign/abi/"
 64 
 65 const CallRegs ForeignGlobals::parse_call_regs(jobject jconv) {
 66   oop conv_oop = JNIHandles::resolve_non_null(jconv);
 67   refArrayOop arg_regs_oop = jdk_internal_foreign_abi_CallConv::argRegs(conv_oop);
 68   refArrayOop ret_regs_oop = jdk_internal_foreign_abi_CallConv::retRegs(conv_oop);
 69   int num_args = arg_regs_oop->length();
 70   int num_rets = ret_regs_oop->length();
 71   CallRegs result(num_args, num_rets);
 72 
 73   for (int i = 0; i < num_args; i++) {
 74     result._arg_regs.push(parse_vmstorage(arg_regs_oop->obj_at(i)));
 75   }
 76 
 77   for (int i = 0; i < num_rets; i++) {
 78     result._ret_regs.push(parse_vmstorage(ret_regs_oop->obj_at(i)));
 79   }
 80 
 81   return result;
 82 }
 83 
 84 VMStorage ForeignGlobals::parse_vmstorage(oop storage) {
 85   jbyte type = jdk_internal_foreign_abi_VMStorage::type(storage);
 86   jshort segment_mask_or_size = jdk_internal_foreign_abi_VMStorage::segment_mask_or_size(storage);
 87   jint index_or_offset = jdk_internal_foreign_abi_VMStorage::index_or_offset(storage);
 88 
< prev index next >