Selectively Shifting and Constraining Computation

John Rose john.r.rose at oracle.com
Tue Oct 18 18:18:08 UTC 2022


And backing out of those particular points raised by Remi, I’d like to 
say that this was a good read; thanks Mark.

Time-shifting is IMO a deeply fruitful notion, and will probably carry 
beyond the specific use cases of adjusting class loading order and 
static-final constant values.  I hope we can find a few tiny spots in 
the language and VM specs where we can remove unimportant restrictions 
that will make various forms of time-shifting (forward and backward, 
global and local) semantically neutral, with respect to specified 
semantics.  To do that we will have to make some parts of the 
specification more lenient towards reordering of expressions that might 
have side effects, and/or some way to constrain side effects.  But we 
must do so with exquisite care, and (often) with opt-in from the user.  
That’s how lazy statics are conceived currently:  They can be 
reordered because they are uncoupled from their class’s `<clinit>`, 
and the uncoupling must be explicitly permitted by the user.  It’s a 
very interesting problem, and a very worth-while one.

I like the way you link time-shifting to the introduction of 
constraints.  I already mentioned how the idea of constraints might tie 
to call sites.  Maybe also data structure fields; who knows.  I’m not 
in a hurry to figure it all out; it feels like we are at the start of 
some years of excellent investigation.

— John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/leyden-dev/attachments/20221018/c8e06f47/attachment.htm>


More information about the leyden-dev mailing list