Mercurial > hg > truffle
comparison src/share/vm/runtime/sharedRuntime.hpp @ 17812:a7d4d4655766
Merge
author | kvn |
---|---|
date | Wed, 26 Mar 2014 18:21:05 -0700 |
parents | a9becfeecd1b |
children | cf9f24de0b93 |
comparison
equal
deleted
inserted
replaced
17789:6b207d038106 | 17812:a7d4d4655766 |
---|---|
139 | 139 |
140 #if defined(__SOFTFP__) || defined(E500V2) | 140 #if defined(__SOFTFP__) || defined(E500V2) |
141 static double dabs(double f); | 141 static double dabs(double f); |
142 #endif | 142 #endif |
143 | 143 |
144 #if defined(__SOFTFP__) || defined(PPC) | 144 #if defined(__SOFTFP__) || defined(PPC32) |
145 static double dsqrt(double f); | 145 static double dsqrt(double f); |
146 #endif | 146 #endif |
147 | 147 |
148 #ifdef __SOFTFP__ | 148 #ifdef __SOFTFP__ |
149 // C++ compiler generates soft float instructions as well as passing | 149 // C++ compiler generates soft float instructions as well as passing |
360 static void check_member_name_argument_is_last_argument(methodHandle method, | 360 static void check_member_name_argument_is_last_argument(methodHandle method, |
361 const BasicType* sig_bt, | 361 const BasicType* sig_bt, |
362 const VMRegPair* regs) NOT_DEBUG_RETURN; | 362 const VMRegPair* regs) NOT_DEBUG_RETURN; |
363 | 363 |
364 // Ditto except for calling C | 364 // Ditto except for calling C |
365 static int c_calling_convention(const BasicType *sig_bt, VMRegPair *regs, int total_args_passed); | 365 // |
366 // C argument in register AND stack slot. | |
367 // Some architectures require that an argument must be passed in a register | |
368 // AND in a stack slot. These architectures provide a second VMRegPair array | |
369 // to be filled by the c_calling_convention method. On other architectures, | |
370 // NULL is being passed as the second VMRegPair array, so arguments are either | |
371 // passed in a register OR in a stack slot. | |
372 static int c_calling_convention(const BasicType *sig_bt, VMRegPair *regs, VMRegPair *regs2, | |
373 int total_args_passed); | |
374 | |
375 // Compute the new number of arguments in the signature if 32 bit ints | |
376 // must be converted to longs. Needed if CCallingConventionRequiresIntsAsLongs | |
377 // is true. | |
378 static int convert_ints_to_longints_argcnt(int in_args_count, BasicType* in_sig_bt); | |
379 // Adapt a method's signature if it contains 32 bit integers that must | |
380 // be converted to longs. Needed if CCallingConventionRequiresIntsAsLongs | |
381 // is true. | |
382 static void convert_ints_to_longints(int i2l_argcnt, int& in_args_count, | |
383 BasicType*& in_sig_bt, VMRegPair*& in_regs); | |
366 | 384 |
367 // Generate I2C and C2I adapters. These adapters are simple argument marshalling | 385 // Generate I2C and C2I adapters. These adapters are simple argument marshalling |
368 // blobs. Unlike adapters in the tiger and earlier releases the code in these | 386 // blobs. Unlike adapters in the tiger and earlier releases the code in these |
369 // blobs does not create a new frame and are therefore virtually invisible | 387 // blobs does not create a new frame and are therefore virtually invisible |
370 // to the stack walking code. In general these blobs extend the callers stack | 388 // to the stack walking code. In general these blobs extend the callers stack |
374 // by the time we reach the blob there is compiled code available. This allows | 392 // by the time we reach the blob there is compiled code available. This allows |
375 // the blob to pass the incoming stack pointer (the sender sp) in a known | 393 // the blob to pass the incoming stack pointer (the sender sp) in a known |
376 // location for the interpreter to record. This is used by the frame code | 394 // location for the interpreter to record. This is used by the frame code |
377 // to correct the sender code to match up with the stack pointer when the | 395 // to correct the sender code to match up with the stack pointer when the |
378 // thread left the compiled code. In addition it allows the interpreter | 396 // thread left the compiled code. In addition it allows the interpreter |
379 // to remove the space the c2i adapter allocated to do it argument conversion. | 397 // to remove the space the c2i adapter allocated to do its argument conversion. |
380 | 398 |
381 // Although a c2i blob will always run interpreted even if compiled code is | 399 // Although a c2i blob will always run interpreted even if compiled code is |
382 // present if we see that compiled code is present the compiled call site | 400 // present if we see that compiled code is present the compiled call site |
383 // will be patched/re-resolved so that later calls will run compiled. | 401 // will be patched/re-resolved so that later calls will run compiled. |
384 | 402 |