src/share/vm/runtime/sharedRuntime.hpp

changeset 6468
cfd05ec74089
parent 6466
6a936747b569
child 6492
1174c8abbdb6
equal deleted inserted replaced
6467:f3806614494a 6468:cfd05ec74089
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

mercurial