RFR(S): 8207773: [lworld] C2 should not allocate when returning a value type as Object from an inlined method (original) (raw)
John Rose john.r.rose at oracle.com
Wed Jul 18 20:08:48 UTC 2018
- Previous message (by thread): RFR(S): 8207773: [lworld] C2 should not allocate when returning a value type as Object from an inlined method
- Next message (by thread): RFR(S): 8207773: [lworld] C2 should not allocate when returning a value type as Object from an inlined method
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
That looks good, but the pre-existing assert may be overly restrictive:
assert(tr->isa_instptr()->klass()->is_java_lang_Object(), "must be java.lang.Object");
The JVM treats all interfaces as untyped pointers, as well as Object. The verifier allows pervasive unchecked conversions between any interface and Object. See VerificationType::resolve_and_check_assignability and note that from_field_is_protected is false almost always.
This odd status of interfaces has often been forgotten in JIT code. Any C2 TypeInstPtr whose klass is an interface is a general reference, a value of which may or may not implement the interface in question. In other words, anywhere an Object is allows, an interface is probably also valid.
I wonder, do we have to do a round of assert adjustment the first time we mix values with interfaces? And one of the advantages of L-world is simple interop between interfaces and values: Are we giving up on this in LW1?
— John
On Jul 18, 2018, at 9:02 AM, Tobias Hartmann <tobias.hartmann at oracle.com> wrote:
Thanks Roland! Best regards, Tobias On 18.07.2018 17:56, Roland Westrelin wrote:
http://cr.openjdk.java.net/~thartmann/8207773/webrev.00/ That looks good. Roland.
- Previous message (by thread): RFR(S): 8207773: [lworld] C2 should not allocate when returning a value type as Object from an inlined method
- Next message (by thread): RFR(S): 8207773: [lworld] C2 should not allocate when returning a value type as Object from an inlined method
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]