Sure, and what I want to avoid is having a requirement of the JVMS (not even the JVM!) turn into a user-visible artifact.  Having a public class whose spec says "I exist entirely for the implementation of X" seems likely to be distracting.

Does it have to be nominal?  Can we say "`new j/l/Object` puts a reference to a new instance of a direct identity subclass of Object with no methods or fields on the top of the stack"?

Yes, this is all good from the language perspective. The outstanding bit is "what does the 
instruction 'new java/lang/Object' do?" The simple thing is for JVMS to say "an instance 
of java/lang/SimpleIdentityObject is created on the heap".

If the class is private, the JVM implementation still knows what it is, so 
that's probably okay, but what does JVMS say? I don't want to phrase it in a 
way that, say, lets a JVM implementation interpret 'new java/lang/Object' as 
'new java/lang/String' or something stupid like that.

Reply via email to