< prev index next >

src/hotspot/cpu/s390/foreignGlobals_s390.cpp

Print this page

 35 
 36 #define __ masm->
 37 
 38 bool ABIDescriptor::is_volatile_reg(Register reg) const {
 39   return _integer_volatile_registers.contains(reg);
 40 }
 41 
 42 bool ABIDescriptor::is_volatile_reg(FloatRegister reg) const {
 43   return _float_argument_registers.contains(reg)
 44           || _float_additional_volatile_registers.contains(reg);
 45 }
 46 
 47 bool ForeignGlobals::is_foreign_linker_supported() {
 48   return true;
 49 }
 50 
 51 const ABIDescriptor ForeignGlobals::parse_abi_descriptor(jobject jabi) {
 52   oop abi_oop = JNIHandles::resolve_non_null(jabi);
 53   ABIDescriptor abi;
 54 
 55   objArrayOop inputStorage = jdk_internal_foreign_abi_ABIDescriptor::inputStorage(abi_oop);
 56   parse_register_array(inputStorage, StorageType::INTEGER, abi._integer_argument_registers, as_Register);
 57   parse_register_array(inputStorage, StorageType::FLOAT, abi._float_argument_registers, as_FloatRegister);
 58 
 59   objArrayOop outputStorage = jdk_internal_foreign_abi_ABIDescriptor::outputStorage(abi_oop);
 60   parse_register_array(outputStorage, StorageType::INTEGER, abi._integer_return_registers, as_Register);
 61   parse_register_array(outputStorage, StorageType::FLOAT, abi._float_return_registers, as_FloatRegister);
 62 
 63   objArrayOop volatileStorage = jdk_internal_foreign_abi_ABIDescriptor::volatileStorage(abi_oop);
 64   parse_register_array(volatileStorage, StorageType::INTEGER, abi._integer_volatile_registers, as_Register);
 65   parse_register_array(volatileStorage, StorageType::FLOAT, abi._float_additional_volatile_registers, as_FloatRegister);
 66 
 67   abi._stack_alignment_bytes = jdk_internal_foreign_abi_ABIDescriptor::stackAlignment(abi_oop);
 68   abi._shadow_space_bytes = jdk_internal_foreign_abi_ABIDescriptor::shadowSpace(abi_oop);
 69 
 70   abi._scratch1 = parse_vmstorage(jdk_internal_foreign_abi_ABIDescriptor::scratch1(abi_oop));
 71   abi._scratch2 = parse_vmstorage(jdk_internal_foreign_abi_ABIDescriptor::scratch2(abi_oop));
 72 
 73   return abi;
 74 }
 75 
 76 int RegSpiller::pd_reg_size(VMStorage reg) {
 77   if (reg.type() == StorageType::INTEGER || reg.type() == StorageType::FLOAT) {
 78     return 8;
 79   }
 80   return 0; // stack and BAD
 81 }
 82 
 83 void RegSpiller::pd_store_reg(MacroAssembler* masm, int offset, VMStorage reg) {

 35 
 36 #define __ masm->
 37 
 38 bool ABIDescriptor::is_volatile_reg(Register reg) const {
 39   return _integer_volatile_registers.contains(reg);
 40 }
 41 
 42 bool ABIDescriptor::is_volatile_reg(FloatRegister reg) const {
 43   return _float_argument_registers.contains(reg)
 44           || _float_additional_volatile_registers.contains(reg);
 45 }
 46 
 47 bool ForeignGlobals::is_foreign_linker_supported() {
 48   return true;
 49 }
 50 
 51 const ABIDescriptor ForeignGlobals::parse_abi_descriptor(jobject jabi) {
 52   oop abi_oop = JNIHandles::resolve_non_null(jabi);
 53   ABIDescriptor abi;
 54 
 55   refArrayOop inputStorage = jdk_internal_foreign_abi_ABIDescriptor::inputStorage(abi_oop);
 56   parse_register_array(inputStorage, StorageType::INTEGER, abi._integer_argument_registers, as_Register);
 57   parse_register_array(inputStorage, StorageType::FLOAT, abi._float_argument_registers, as_FloatRegister);
 58 
 59   refArrayOop outputStorage = jdk_internal_foreign_abi_ABIDescriptor::outputStorage(abi_oop);
 60   parse_register_array(outputStorage, StorageType::INTEGER, abi._integer_return_registers, as_Register);
 61   parse_register_array(outputStorage, StorageType::FLOAT, abi._float_return_registers, as_FloatRegister);
 62 
 63   refArrayOop volatileStorage = jdk_internal_foreign_abi_ABIDescriptor::volatileStorage(abi_oop);
 64   parse_register_array(volatileStorage, StorageType::INTEGER, abi._integer_volatile_registers, as_Register);
 65   parse_register_array(volatileStorage, StorageType::FLOAT, abi._float_additional_volatile_registers, as_FloatRegister);
 66 
 67   abi._stack_alignment_bytes = jdk_internal_foreign_abi_ABIDescriptor::stackAlignment(abi_oop);
 68   abi._shadow_space_bytes = jdk_internal_foreign_abi_ABIDescriptor::shadowSpace(abi_oop);
 69 
 70   abi._scratch1 = parse_vmstorage(jdk_internal_foreign_abi_ABIDescriptor::scratch1(abi_oop));
 71   abi._scratch2 = parse_vmstorage(jdk_internal_foreign_abi_ABIDescriptor::scratch2(abi_oop));
 72 
 73   return abi;
 74 }
 75 
 76 int RegSpiller::pd_reg_size(VMStorage reg) {
 77   if (reg.type() == StorageType::INTEGER || reg.type() == StorageType::FLOAT) {
 78     return 8;
 79   }
 80   return 0; // stack and BAD
 81 }
 82 
 83 void RegSpiller::pd_store_reg(MacroAssembler* masm, int offset, VMStorage reg) {
< prev index next >