> On Feb 8, 2020, at 10:08 PM, Dan Smith <[email protected]> wrote:
> 
>> Actually
>> in HotSpot it does something:  For a class with a finalizer it registers 
>> something
>> somewhere.  But that’s precisely irrelevant to inlines.
> 
> Oh, yeah, if we need to make sure that code gets executed (for identity 
> classes), that will affect the design.

In terms of actual code execution, it looks like there's nothing for the Object 
constructor to do:

  public java.lang.Object();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
         0: return
      LineNumberTable:
        line 50: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       1     0  this   Ljava/lang/Object;
    RuntimeVisibleAnnotations:
      0: #65()
        jdk.internal.HotSpotIntrinsicCandidate

If Hotspot wants to do some internal bookkeeping whenever a new instance gets 
created (either with the 'new' instruction or when, morally, Object.<init> 
would execute), of course it's free to do so.

So I'm tentatively proposing changing this bytecode to use ACC_ABSTRACT:

  public java.lang.Object();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC, ACC_ABSTRACT

(How we actually achieve this in 
src/java.base/share/classes/java/lang/Object.java is TBD.)

Reply via email to