Scoped variables
Brian Goetz
brian.goetz at oracle.com
Thu Dec 6 18:57:44 UTC 2018
Let me toss in a few more kinds of stack-based cookies that we stumbled
over in Lambda, to be kept in the back of our heads as we design such a
mechanism. There were three (subtly) related features that were
requested in Lambda, which we did not implement:
- capturing mutable locals
- nonlocal return from lambdas
- exception transparency
While we could argue (but shouldn't here) whether these features are
good ideas or bad ideas on their own, what they had in common was: the
lambdas that were captured were somehow "stack bound". That is, they had
references into the stack of the capturer, and therefore, they had some
implicit constraints: they could only be invoked on the capturing
thread, while the capturing frame was still on the stack. After that
frame is unwound, they need to turn into pumpkins; if called from
another thread, they need to fail fast (throw some sort of
WrongTrousersException.)
The ability to capture a frame local that describes the capture frame,
and validate at invocation time that the calling stack still contains
that frame, is a building block on which all these features could be built.
On 12/4/2018 7:33 PM, John Rose wrote:
> I like the thought here: There are several kinds of "cookies" you might need
> to look for in a stack walk. The JVM should unify them; the reward will be
> simpler code and better return on investment in JIT optimizations. Stack
> based access control is today's such cookie.
>
More information about the loom-dev
mailing list