RFR (S) 8001105: findVirtual of Object[].clone produces internal error

John Rose john.r.rose at oracle.com
Tue Oct 1 14:29:04 PDT 2013


Second call for reviews.  I need two official Reviewers for this change.  — John

P.S.  Thanks for your comments Morris; I enhanced the comment:

+    // The JVM does this hack also.
++   // (See ClassVerifier::verify_invoke_instructions
++   // and LinkResolver::check_method_accessability.)
++   // Because the JVM does not allow separate methods on array types,
+    // there is no separate method for int[].clone.
+    // All arrays simply inherit Object.clone.
+    // But for access checking logic, we make Object.clone
+    // (normally protected) appear to be public.
+    // Later on, when the DirectMethodHandle is created,
+    // its leading argument will be restricted to the
+    // requested array type.
++   // N.B. The return type is not adjusted, because
++   // that is *not* the bytecode behavior.

Oddly, the JVMS does not mention this hack explicitly.  Maybe it's buried in the Prolog code.

On Sep 21, 2013, at 2:34 AM, Morris Meyer <morris.meyer at oracle.com> wrote:

> This looks good.  Might want to point out where in HotSpot this change originates from in your comment.
> 
>    --mm
> 
> 
>> On Sep 18, 2013, at 10:32 PM, John Rose <rose00 at me.com> wrote:
>> 
>> http://cr.openjdk.java.net/~jrose/8001105/webrev.00/
>> 
>> Summary: Replicate JVM logic for access control that makes Object.clone appear public when applied to an array type.
>> 
>> See: http://mail.openjdk.java.net/pipermail/mlvm-dev/2012-October/005035.html
>> 
>> — John
>> 
>> 
>> _______________________________________________
>> mlvm-dev mailing list
>> mlvm-dev at openjdk.java.net
>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev



More information about the mlvm-dev mailing list