RFR (S): 8154473: Update for CompilerDirectives to control stub generation and intrinsics

Deshpande, Vivek R vivek.r.deshpande at intel.com
Tue May 10 17:59:56 UTC 2016


HI Christian

We have not heard from runtime team regarding this change.
Shall we go ahead with the current solution ?
I can send out the latest webrev.
Let me know your thoughts.

Regards,
Vivek

From: Christian Thalinger [mailto:christian.thalinger at oracle.com]
Sent: Monday, May 02, 2016 3:44 PM
To: Deshpande, Vivek R
Cc: Viswanathan, Sandhya; hotspot compiler; hotspot-runtime-dev at openjdk.java.net runtime
Subject: Re: RFR (S): 8154473: Update for CompilerDirectives to control stub generation and intrinsics


On May 2, 2016, at 11:53 AM, Deshpande, Vivek R <vivek.r.deshpande at intel.com<mailto:vivek.r.deshpande at intel.com>> wrote:

Hi Christian

I had tried using call_VM_leaf() which you mentioned.

But this function

void MacroAssembler::call_VM_leaf(address entry_point, int number_of_arguments) {
  call_VM_leaf_base(entry_point, number_of_arguments);
}

ends up calling

void InterpreterMacroAssembler::call_VM_leaf_base(address entry_point,
                                                  int number_of_arguments) { ...
from interp_masm_x86.cpp instead of

void MacroAssembler::call_VM_leaf_base(address entry_point, int num_args) { …

Frankly, I didn’t know that there is an overload for call_VM_leaf_base in InterpreterMacroAssembler.  So this means there are two options:

a)  Add a method in MacroAssembler to call MacroAssembler::call_VM_leaf_base (what you did) or

b)  Add InterpreterMacroAssembler::call_VM_leaf and change MacroAssembler::call_VM_leaf to do:

void MacroAssembler::call_VM_leaf(address entry_point, int number_of_arguments) {
  MacroAssembler::call_VM_leaf_base(entry_point, number_of_arguments);
}

I will let the runtime team decide.


So I had put mathfunc() to call the masm version of call_VM_leaf_base().

Let me know what you think.

Thanks and regards,
Vivek

From: Christian Thalinger [mailto:christian.thalinger at oracle.com]
Sent: Monday, May 02, 2016 1:50 PM
To: Deshpande, Vivek R
Cc: hotspot-compiler-dev at openjdk.java.net<mailto:hotspot-compiler-dev at openjdk.java.net>
Subject: Re: RFR (S): 8154473: Update for CompilerDirectives to control stub generation and intrinsics


On Apr 26, 2016, at 8:53 PM, Deshpande, Vivek R <vivek.r.deshpande at intel.com<mailto:vivek.r.deshpande at intel.com>> wrote:

Hi Christian

I have updated the webrev and link for the same is here:
http://cr.openjdk.java.net/~vdeshpande/CompilerDirectives/8154473/webrev.03/
I am using mathfunc() to call the masm version of call_VM_leaf_base() and not the InterpreterMacroAssembler version.

That’s better but, again, there is nothing math-y about this method:

! void MacroAssembler::mathfunc(address runtime_entry) {

    MacroAssembler::call_VM_leaf_base(runtime_entry, 0);

  }
Also, there is this method:

void MacroAssembler::call_VM_leaf(address entry_point, int number_of_arguments) {
  call_VM_leaf_base(entry_point, number_of_arguments);
}

which has:

  void call_VM_leaf(address entry_point,
                    int number_of_arguments = 0);

Get rid of mathfunc completely and use call_VM_leaf directly.


Regards,
Vivek


From: Christian Thalinger [mailto:christian.thalinger at oracle.com]
Sent: Thursday, April 21, 2016 2:35 PM
To: Deshpande, Vivek R <vivek.r.deshpande at intel.com<mailto:vivek.r.deshpande at intel.com>>
Cc: Nils Eliasson <nils.eliasson at oracle.com<mailto:nils.eliasson at oracle.com>>; hotspot-compiler-dev at openjdk.java.net<mailto:hotspot-compiler-dev at openjdk.java.net>; Vladimir Kozlov <vladimir.kozlov at oracle.com<mailto:vladimir.kozlov at oracle.com>>
Subject: Re: RFR (S): 8154473: Update for CompilerDirectives to control stub generation and intrinsics


On Apr 20, 2016, at 2:13 PM, Deshpande, Vivek R <vivek.r.deshpande at intel.com<mailto:vivek.r.deshpande at intel.com>> wrote:

Hi

The correct URL for the updated webrev is this.
http://cr.openjdk.java.net/~vdeshpande/CompilerDirectives/8154473/webrev.02/


+void MacroAssembler::mathfunc(address runtime_entry) {
I don’t like the name of this method.  Mainly because it’s only aligning the stack (shouldn’t that happen somewhere else?) and doing this 0x20 stack frame thing which I still don’t understand.

Right, this is the one I was thinking about:

void MacroAssembler::call_VM_leaf_base(address entry_point, int num_args) {




Sorry for the spam.

Regards,
Vivek

From: Deshpande, Vivek R
Sent: Wednesday, April 20, 2016 5:10 PM
To: Deshpande, Vivek R; 'Nils Eliasson'; 'hotspot-compiler-dev at openjdk.java.net<mailto:hotspot-compiler-dev at openjdk.java.net>'
Cc: 'Vladimir Kozlov'; 'Volker Simonis'; 'Christian Thalinger'; Viswanathan, Sandhya
Subject: RE: RFR (S): 8154473: Update for CompilerDirectives to control stub generation and intrinsics

Sent out the wrong link by mistake.

updated webrev:
http://cr.openjdk.java.net/~vdeshpande/CompilerDirectives/8154473/webrev.02/<http://cr.openjdk.java.net/~vdeshpande/CompilerDirectives/8154473/webrev.01/>

Regards
Vivek


From: Deshpande, Vivek R
Sent: Wednesday, April 20, 2016 5:07 PM
To: 'Nils Eliasson'; hotspot-compiler-dev at openjdk.java.net<mailto:hotspot-compiler-dev at openjdk.java.net>
Cc: Vladimir Kozlov; Volker Simonis; Christian Thalinger; Viswanathan, Sandhya
Subject: RE: RFR (S): 8154473: Update for CompilerDirectives to control stub generation and intrinsics

Hi Nils

I have updated the webrev with all the suggestions.
updated webrev:
http://cr.openjdk.java.net/~vdeshpande/CompilerDirectives/8154473/webrev.01/
Thanks for your comments and review.

@Vladimir,
I have taken care of all the comments. Would you please review and sponsor the patch.

Thanks and regards,
Vivek

From: Nils Eliasson [mailto:nils.eliasson at oracle.com]
Sent: Wednesday, April 20, 2016 12:27 PM
To: Deshpande, Vivek R; hotspot-compiler-dev at openjdk.java.net<mailto:hotspot-compiler-dev at openjdk.java.net>
Cc: Vladimir Kozlov; Volker Simonis; Christian Thalinger; Viswanathan, Sandhya
Subject: Re: RFR (S): 8154473: Update for CompilerDirectives to control stub generation and intrinsics

In vmSymbols.cpp together with the other flag checks.

Regards,
Nils
On 2016-04-20 02:44, Deshpande, Vivek R wrote:
HI Nils

Yes you are right the function accesses the command line flag DisableIntrinsic and changes are static.
Could you point me the right location for the function ?
Also I have updated the webrev with rest of the comments here:
http://cr.openjdk.java.net/~vdeshpande/CompilerDirectives/8154473/webrev.01/

Regards,
Vivek

From: hotspot-compiler-dev [mailto:hotspot-compiler-dev-bounces at openjdk.java.net]On Behalf Of Nils Eliasson
Sent: Tuesday, April 19, 2016 5:55 AM
To: hotspot-compiler-dev at openjdk.java.net<mailto:hotspot-compiler-dev at openjdk.java.net>
Subject: Re: RFR (S): 8154473: Update for CompilerDirectives to control stub generation and intrinsics

Hi Vivek,

The changes in is_intrinsic_disabled in compilerDirectives.* are static and only access the command line flag DisableIntrinsics. As long as stubs are only generated during startup and don't have a method context - that is ok - but it doesn't belong in the compilerDirectives-files if it doens't use directives.

Regards,
Nils
On 2016-04-18 19:38, Deshpande, Vivek R wrote:
Hi all

I would like to contribute a patch which helps to control the intrinsics in interpreter, c1 and c2 by disabling the stub generation.
This uses -XX:DisableIntrinsic option to achieve the same.
Could you please review and sponsor this patch.

Bug-id:
https://bugs.openjdk.java.net/browse/JDK-8154473
webrev:
http://cr.openjdk.java.net/~vdeshpande/CompilerDirectives/8154473/webrev.00/<http://cr.openjdk.java.net/%7Evdeshpande/CompilerDirectives/8154473/webrev.00/>

Thanks and regards,
Vivek



More information about the hotspot-runtime-dev mailing list