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 <[email protected]>
> Subject: Re: Common bootstrap
> To: [email protected]
> Message-ID: <[email protected]>
> 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
[email protected]
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev