Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/sharedRuntime.hpp @ 14416:6a936747b569
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.
Reviewed-by: kvn, cjplummer
author | goetz |
---|---|
date | Thu, 12 Sep 2013 13:51:13 -0700 |
parents | b5c8a61d7fa0 |
children | cfd05ec74089 |
comparison
equal
deleted
inserted
replaced
14415:666e6ce3976c | 14416:6a936747b569 |
---|---|
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 |