src/share/vm/runtime/sharedRuntime.hpp

Print this page
rev 5188 : 8024344: PPC64 (part 112): C argument in register AND stack slot.
Summary: On PPC, the first 13 floating point arguments to C calls are passed in floating point registers. Also, all but the first 8 arguments are passed on the stack. So there can be floating point arguments that are passed on the stack and in a register. We duplicate the regs datastructure in c_calling_convention() to represent this.

*** 354,364 **** static void check_member_name_argument_is_last_argument(methodHandle method, const BasicType* sig_bt, const VMRegPair* regs) NOT_DEBUG_RETURN; // Ditto except for calling C ! static int c_calling_convention(const BasicType *sig_bt, VMRegPair *regs, int total_args_passed); // Generate I2C and C2I adapters. These adapters are simple argument marshalling // blobs. Unlike adapters in the tiger and earlier releases the code in these // blobs does not create a new frame and are therefore virtually invisible // to the stack walking code. In general these blobs extend the callers stack --- 354,372 ---- static void check_member_name_argument_is_last_argument(methodHandle method, const BasicType* sig_bt, const VMRegPair* regs) NOT_DEBUG_RETURN; // Ditto except for calling C ! // ! // C argument in register AND stack slot. ! // Some architectures require that an argument must be passed in a register ! // AND in a stack slot. These architectures provide a second VMRegPair array ! // to be filled by the c_calling_convention method. On other architectures, ! // NULL is being passed as the second VMRegPair array, so arguments are either ! // passed in a register OR in a stack slot. ! static int c_calling_convention(const BasicType *sig_bt, VMRegPair *regs, VMRegPair *regs2, ! int total_args_passed); // Generate I2C and C2I adapters. These adapters are simple argument marshalling // blobs. Unlike adapters in the tiger and earlier releases the code in these // blobs does not create a new frame and are therefore virtually invisible // to the stack walking code. In general these blobs extend the callers stack