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

Doug Simon doug.simon at oracle.com
Fri Apr 26 12:20:26 PDT 2013


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