hotspot/src/share/vm/runtime/sharedRuntime.hpp
changeset 22834 3e2df6a4a28c
parent 22832 03720a5b7595
child 22858 f4a6f0eba875
equal deleted inserted replaced
22833:92d74f188f73 22834:3e2df6a4a28c
   364   // NULL is being passed as the second VMRegPair array, so arguments are either
   364   // NULL is being passed as the second VMRegPair array, so arguments are either
   365   // passed in a register OR in a stack slot.
   365   // passed in a register OR in a stack slot.
   366   static int c_calling_convention(const BasicType *sig_bt, VMRegPair *regs, VMRegPair *regs2,
   366   static int c_calling_convention(const BasicType *sig_bt, VMRegPair *regs, VMRegPair *regs2,
   367                                   int total_args_passed);
   367                                   int total_args_passed);
   368 
   368 
       
   369   // Compute the new number of arguments in the signature if 32 bit ints
       
   370   // must be converted to longs. Needed if CCallingConventionRequiresIntsAsLongs
       
   371   // is true.
       
   372   static int  convert_ints_to_longints_argcnt(int in_args_count, BasicType* in_sig_bt);
       
   373   // Adapt a method's signature if it contains 32 bit integers that must
       
   374   // be converted to longs. Needed if CCallingConventionRequiresIntsAsLongs
       
   375   // is true.
       
   376   static void convert_ints_to_longints(int i2l_argcnt, int& in_args_count,
       
   377                                        BasicType*& in_sig_bt, VMRegPair*& in_regs);
       
   378 
   369   // Generate I2C and C2I adapters. These adapters are simple argument marshalling
   379   // Generate I2C and C2I adapters. These adapters are simple argument marshalling
   370   // blobs. Unlike adapters in the tiger and earlier releases the code in these
   380   // blobs. Unlike adapters in the tiger and earlier releases the code in these
   371   // blobs does not create a new frame and are therefore virtually invisible
   381   // blobs does not create a new frame and are therefore virtually invisible
   372   // to the stack walking code. In general these blobs extend the callers stack
   382   // to the stack walking code. In general these blobs extend the callers stack
   373   // as needed for the conversion of argument locations.
   383   // as needed for the conversion of argument locations.
   376   // by the time we reach the blob there is compiled code available. This allows
   386   // by the time we reach the blob there is compiled code available. This allows
   377   // the blob to pass the incoming stack pointer (the sender sp) in a known
   387   // the blob to pass the incoming stack pointer (the sender sp) in a known
   378   // location for the interpreter to record. This is used by the frame code
   388   // location for the interpreter to record. This is used by the frame code
   379   // to correct the sender code to match up with the stack pointer when the
   389   // to correct the sender code to match up with the stack pointer when the
   380   // thread left the compiled code. In addition it allows the interpreter
   390   // thread left the compiled code. In addition it allows the interpreter
   381   // to remove the space the c2i adapter allocated to do it argument conversion.
   391   // to remove the space the c2i adapter allocated to do its argument conversion.
   382 
   392 
   383   // Although a c2i blob will always run interpreted even if compiled code is
   393   // Although a c2i blob will always run interpreted even if compiled code is
   384   // present if we see that compiled code is present the compiled call site
   394   // present if we see that compiled code is present the compiled call site
   385   // will be patched/re-resolved so that later calls will run compiled.
   395   // will be patched/re-resolved so that later calls will run compiled.
   386 
   396