RFR (M): GRAAL-246: intrinsify Reflection.getCallerClass

Christian Thalinger christian.thalinger at oracle.com
Fri Apr 26 12:41:51 PDT 2013


Thank you, Doug.  I'm going to push this later today.

-- Chris

On Apr 26, 2013, at 12:20 PM, Doug Simon <doug.simon at oracle.com> wrote:

> Looks fine to me.
> 
> On Apr 25, 2013, at 6:46 PM, Christian Thalinger <christian.thalinger at oracle.com> wrote:
> 
>> [Resending because of missing CC.]
>> 
>> On Apr 25, 2013, at 3:42 AM, Andreas Woess <awx at gmx.at> wrote:
>> 
>>> In ReflectionGetCallerClassNode.getCallerClassNode(), case 0 is dead
>>> code (n starts at 1).
>> 
>> That's on purpose.  There are two (and now three) copies of this security sensitive code in HotSpot:
>> 
>> 1)  JVM_GetCallerClass
>> 2)  LibraryCallKit::inline_native_Reflection_getCallerClass
>> 3)  ReflectionGetCallerClassNode.getCallerClassNode
>> 
>> When I reworked this code I tried to make the code as similar as possible to avoid future bugs.
>> 
>> There is a comment before the loop:
>> 
>> 67         // NOTE: Start the loop at depth 1 because the current frame state does
>> 68         // not include the Reflection.getCallerClass() frame.
>> 
>> and the exception which is really a should not reach here:
>> 
>> 73                     throw GraalInternalError.shouldNotReachHere("current frame state does not include the Reflection.getCallerClass frame");
>> 
>> I would like to keep it this way.
>> 
>> -- Chris
>> 
>>> 
>>> - andreas
>>> 
>>> On 25.04.2013 06:08, Christian Thalinger wrote:
>>>> [Now that the CallerSensitive changes have arrived in the jdk8 repository I finally had to time to finish this up.]
>>>> 
>>>> http://cr.openjdk.java.net/~twisti/GRAAL-246
>>>> 
>>>> GRAAL-246: intrinsify Reflection.getCallerClass
>>>> 
>>>> graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java
>>>> graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java
>>>> graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java
>>>> graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionSubstitutions.java
>>>> graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java
>>>> src/share/vm/graal/graalCompilerToVM.cpp
>>>> src/share/vm/graal/graalJavaAccess.hpp
>>>> 
>>> 
>> 
> 



More information about the graal-dev mailing list