< prev index next >

src/hotspot/cpu/ppc/foreignGlobals_ppc.cpp

Print this page

 27 #include "runtime/jniHandles.hpp"
 28 #include "runtime/jniHandles.inline.hpp"
 29 #include "oops/typeArrayOop.inline.hpp"
 30 #include "oops/oopCast.inline.hpp"
 31 #include "prims/foreignGlobals.hpp"
 32 #include "prims/foreignGlobals.inline.hpp"
 33 #include "prims/vmstorage.hpp"
 34 #include "utilities/formatBuffer.hpp"
 35 
 36 #define __ masm->
 37 
 38 bool ForeignGlobals::is_foreign_linker_supported() {
 39   return true;
 40 }
 41 
 42 // Stubbed out, implement later
 43 const ABIDescriptor ForeignGlobals::parse_abi_descriptor(jobject jabi) {
 44   oop abi_oop = JNIHandles::resolve_non_null(jabi);
 45   ABIDescriptor abi;
 46 
 47   objArrayOop inputStorage = jdk_internal_foreign_abi_ABIDescriptor::inputStorage(abi_oop);
 48   parse_register_array(inputStorage, StorageType::INTEGER, abi._integer_argument_registers, as_Register);
 49   parse_register_array(inputStorage, StorageType::FLOAT, abi._float_argument_registers, as_FloatRegister);
 50 
 51   objArrayOop outputStorage = jdk_internal_foreign_abi_ABIDescriptor::outputStorage(abi_oop);
 52   parse_register_array(outputStorage, StorageType::INTEGER, abi._integer_return_registers, as_Register);
 53   parse_register_array(outputStorage, StorageType::FLOAT, abi._float_return_registers, as_FloatRegister);
 54 
 55   abi._stack_alignment_bytes = jdk_internal_foreign_abi_ABIDescriptor::stackAlignment(abi_oop);
 56   abi._shadow_space_bytes = jdk_internal_foreign_abi_ABIDescriptor::shadowSpace(abi_oop);
 57 
 58   abi._scratch1 = parse_vmstorage(jdk_internal_foreign_abi_ABIDescriptor::scratch1(abi_oop));
 59   abi._scratch2 = parse_vmstorage(jdk_internal_foreign_abi_ABIDescriptor::scratch2(abi_oop));
 60 
 61   return abi;
 62 }
 63 
 64 int RegSpiller::pd_reg_size(VMStorage reg) {
 65   if (reg.type() == StorageType::INTEGER || reg.type() == StorageType::FLOAT) {
 66     return 8;
 67   }
 68   return 0; // stack and BAD
 69 }
 70 
 71 void RegSpiller::pd_store_reg(MacroAssembler* masm, int offset, VMStorage reg) {

 27 #include "runtime/jniHandles.hpp"
 28 #include "runtime/jniHandles.inline.hpp"
 29 #include "oops/typeArrayOop.inline.hpp"
 30 #include "oops/oopCast.inline.hpp"
 31 #include "prims/foreignGlobals.hpp"
 32 #include "prims/foreignGlobals.inline.hpp"
 33 #include "prims/vmstorage.hpp"
 34 #include "utilities/formatBuffer.hpp"
 35 
 36 #define __ masm->
 37 
 38 bool ForeignGlobals::is_foreign_linker_supported() {
 39   return true;
 40 }
 41 
 42 // Stubbed out, implement later
 43 const ABIDescriptor ForeignGlobals::parse_abi_descriptor(jobject jabi) {
 44   oop abi_oop = JNIHandles::resolve_non_null(jabi);
 45   ABIDescriptor abi;
 46 
 47   refArrayOop inputStorage = jdk_internal_foreign_abi_ABIDescriptor::inputStorage(abi_oop);
 48   parse_register_array(inputStorage, StorageType::INTEGER, abi._integer_argument_registers, as_Register);
 49   parse_register_array(inputStorage, StorageType::FLOAT, abi._float_argument_registers, as_FloatRegister);
 50 
 51   refArrayOop outputStorage = jdk_internal_foreign_abi_ABIDescriptor::outputStorage(abi_oop);
 52   parse_register_array(outputStorage, StorageType::INTEGER, abi._integer_return_registers, as_Register);
 53   parse_register_array(outputStorage, StorageType::FLOAT, abi._float_return_registers, as_FloatRegister);
 54 
 55   abi._stack_alignment_bytes = jdk_internal_foreign_abi_ABIDescriptor::stackAlignment(abi_oop);
 56   abi._shadow_space_bytes = jdk_internal_foreign_abi_ABIDescriptor::shadowSpace(abi_oop);
 57 
 58   abi._scratch1 = parse_vmstorage(jdk_internal_foreign_abi_ABIDescriptor::scratch1(abi_oop));
 59   abi._scratch2 = parse_vmstorage(jdk_internal_foreign_abi_ABIDescriptor::scratch2(abi_oop));
 60 
 61   return abi;
 62 }
 63 
 64 int RegSpiller::pd_reg_size(VMStorage reg) {
 65   if (reg.type() == StorageType::INTEGER || reg.type() == StorageType::FLOAT) {
 66     return 8;
 67   }
 68   return 0; // stack and BAD
 69 }
 70 
 71 void RegSpiller::pd_store_reg(MacroAssembler* masm, int offset, VMStorage reg) {
< prev index next >