Likely some subtlety I'm missing here.

I meant inherited in the general sense.  Maybe hierarchically blest is a better 
term.  That is, that during initialization, a subclass copies the bootstrap MH 
from it's parent class (no instances involved.)  The subclass can still 
override the bootstrap with a static initializer.  The point is to simplify the 
launch effort/size/performance in each of the subclasses.

So instead of 

    class LangBaseClass {
        public static CallSite bootstrap(Class caller, String name, MethodType 
type) {
                ...
                return callSite;
        }

        static {
                java.dyn.Linkage.registerBootstrapMethod(LangBaseClass.class, 
"bootstrap");
        }
    }

    class LangSubClass1 extends LangBaseClass {
        static {
                java.dyn.Linkage.registerBootstrapMethod(LangBaseClass.class, 
"bootstrap");
        }

        ...

        InvokeDynamic.foo();

    }

    class LangSubclass2 extends LangBaseClass {
        static {
                java.dyn.Linkage.registerBootstrapMethod(LangBaseClass.class, 
"bootstrap");
        }

        ...

        InvokeDynamic.bar();

    }

...

We have;


    class LangBaseClass {
        public static CallSite bootstrap(Class caller, String name, MethodType 
type) {
                ...
                return callSite;
        }

        static {
                java.dyn.Linkage.registerBootstrapMethod(LangBaseClass.class, 
"bootstrap");
        }
    }

    class LangSubClass1 extends LangBaseClass {

        ...

        InvokeDynamic.foo();

    }

    class LangSubclass2 extends LangBaseClass {

        ...

        InvokeDynamic.bar();

    }

...

> Date: Tue, 24 Aug 2010 16:01:00 +0200
> From: R?mi Forax <fo...@univ-mlv.fr>
> Subject: Re: Common bootstrap
> To: mlvm-dev@openjdk.java.net
> Message-ID: <4c73d09c.60...@univ-mlv.fr>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
> 
> Le 24/08/2010 15:36, Jim Laskey a ?crit :
>> Excuse me for being late in the game but I have a na?ve question.
>> 
>> Why not have the bootstrap method be inherited?  Isn't it likely that a 
>> j-lang would have a base class and that often a common bootstrap might be 
>> used?  (I'm assuming it's an implementation/security issue, but asking 
>> anyway.)
>> 
>> Cheers,
>> 
>> -- Jim
>> 
> 
> Before bootstrapping you have nothing :)
> so you have no object to do a virtual call.
> 
> Attila Szegedi has an interesting answers on how to share/reuse some 
> infrastructure on top of invokedynamic:
> http://wiki.jvmlangsummit.com/images/7/73/Metaobject_Protocol_Meets_Invokedynamic.pdf
> 
> R?mi

_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to