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