question on exports to

Jochen Theodorou blackdrag at gmx.org
Sat Jun 4 00:59:24 UTC 2016



On 03.06.2016 22:20, Alex Buckley wrote:
[...]
> Why don't you believe it? The "Under The Hood" presentation shows that
> layer creation makes the JVM aware of modules and their relationships.

because I was thinking it will lower performance. Sure, benchmarks are 
often driven by code of callsites, that are actually no moving much, and 
in such benchmarks there will be no problem. And yes, this checkc has to 
be done only once, unless the callsite has to be reevaluated... Still it 
will increase the one time cost, unless you meet one of those callsites, 
that require the JVM to regularly deopt. But on the other hand the JVM 
is not good at recovering from a deopt anyway (at least that is my 
perception)... so maybe it does not really matter in the end.

> Later, when the JVM resolves the descriptor of an invokevirtual
> instruction, it checks that the current class (containing invokevirtual)
> can access the class referenced in the descriptor, and this check takes
> module membership, exports, and readability into account. Can the
> current class's module read the target class's module, and does the
> target class's module export the target class to (at least) the current
> class's module?

I see.. and I assume that counts for get/setField and all invoke 
instructions including invokeSpecial and newinstance.

> There's a clear contrast between the two-way check performed by the JVM,
> and the one-way check (exports only, readability "for free") performed
> by Core Reflection.

so... odes reflection code still produce runtime helper classes for 
invocation? That is then a dynamic module based solution?

bye Jochen


More information about the jigsaw-dev mailing list