Can we also get some feedback on specialization, please?
Peter Levart
peter.levart at gmail.com
Sat Jan 10 22:16:54 UTC 2015
On 01/10/2015 10:01 PM, Palo Marton wrote:
> CHM will prevent class unloading and that can be a problem for long
> running server.
In this particular case the specialized classes will be referenced from
static field of non-specialized class, all of them loaded by same
ClassLoader and all of them eligible for GC at the same time.
Peter
>
> On Saturday, January 10, 2015, Peter Levart <peter.levart at gmail.com
> <mailto:peter.levart at gmail.com>> wrote:
>
>
> On 01/10/2015 10:58 AM, Remi Forax wrote:
>
>
> On 01/10/2015 04:49 AM, Brian Goetz wrote:
>
> You might look at ClassValue as a means for this sort of
> per-class
> static constants?
>
>
> The result of ClassValue.get() with a constant class is not a
> constant at least with the current implementation.
>
> Rémi
>
>
> The alternative is to use the class literal as a key into CHM for
> example:
>
> class HolderClass<any T> {
> static final ConcurrentMap<Class<?>, X> constants = new CHM<>();
>
> static <any T> X getConstant() {
> return constants.computeIfAbsent(HolderClass<T>.class, (c)
> -> { ... });
> }
>
>
> See also here, when you know the values for all specializations
> upfront:
>
> http://cr.openjdk.java.net/~plevart/misc/valhala-hacks/util/AnyHelper.java
> <http://cr.openjdk.java.net/%7Eplevart/misc/valhala-hacks/util/AnyHelper.java>
>
>
> Regards, Peter
>
>
>
> On 1/9/2015 10:47 PM, MacGregor, Duncan (GE Energy
> Management) wrote:
>
> And another thing...
>
> If I want to try and combine the use of VarHandles and
> specialisation
> to make something with atomic properties (as I'm sure
> we'll all want
> to do for concurrent collections) then at the moment I
> can't use
> static fields for the var handles, and the JIT is
> almost certainly
> going to hate me if I they are stored on instance
> fields. I think
> we'll need some way to specify static fields as
> specialised and
> provide initialisers for them. This cannot be done by
> simply having
> different statics for different layers since each
> specialised class
> will need it's own statics.
>
> I'm sure there's also some evil I can perpetrate by
> specialising
> CallSites, but I haven't though of a really convincing
> case for doing
> so yet (at least not until I can define typed tuples
> when I can maybe
> replace various varargs fallbacks), and I hit the same
> statics
> problem as above with MethodHandles anyway.
>
>
>
More information about the valhalla-dev
mailing list