mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
6829187: compiler optimizations required for JSR 292
C2 implementation for invokedynamic support. Reviewed-by: kvn, never
This commit is contained in:
parent
9be2e29930
commit
375527d84e
31 changed files with 566 additions and 89 deletions
|
@ -636,7 +636,9 @@ uint MachCallJavaNode::cmp( const Node &n ) const {
|
|||
}
|
||||
#ifndef PRODUCT
|
||||
void MachCallJavaNode::dump_spec(outputStream *st) const {
|
||||
if( _method ) {
|
||||
if (_method_handle_invoke)
|
||||
st->print("MethodHandle ");
|
||||
if (_method) {
|
||||
_method->print_short_name(st);
|
||||
st->print(" ");
|
||||
}
|
||||
|
@ -644,6 +646,20 @@ void MachCallJavaNode::dump_spec(outputStream *st) const {
|
|||
}
|
||||
#endif
|
||||
|
||||
//------------------------------Registers--------------------------------------
|
||||
const RegMask &MachCallJavaNode::in_RegMask(uint idx) const {
|
||||
// Values in the domain use the users calling convention, embodied in the
|
||||
// _in_rms array of RegMasks.
|
||||
if (idx < tf()->domain()->cnt()) return _in_rms[idx];
|
||||
// Values outside the domain represent debug info
|
||||
Matcher* m = Compile::current()->matcher();
|
||||
// If this call is a MethodHandle invoke we have to use a different
|
||||
// debugmask which does not include the register we use to save the
|
||||
// SP over MH invokes.
|
||||
RegMask** debugmask = _method_handle_invoke ? m->idealreg2mhdebugmask : m->idealreg2debugmask;
|
||||
return *debugmask[in(idx)->ideal_reg()];
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
uint MachCallStaticJavaNode::size_of() const { return sizeof(*this); }
|
||||
uint MachCallStaticJavaNode::cmp( const Node &n ) const {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue