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
|