@Matt,
Sorry my explanation wasn't that clear, suppose you have:
class A extends JRObject {
JRObject m() { ... }
}
class B extends A {
@Override JRObject m() { ... }
}
Then you remove B.m, in which case you replace B with:
class B extends A {
@Override JRObject m() { return super.m(); } // m is declared at
compile time in super class, A
}
And if you then remove A.m you replace A with:
class A extends JRObject {
JRObject m() { return addedMethod( <methodID for m()>, null ); } //
m isn't in A's superclass
}
Hope that is a better explanation,
Howard.
On Oct 10, 7:55 am, "Matt Fowles" <[EMAIL PROTECTED]> wrote:
> Howard~
>
> I am not certain I follow your explanation, so I will try to rephrase
> my question.
>
> If a method is known at compile time (and thus called by
> object.name(...)). How can that method be replaced (or removed) at
> run time, such that previously compiled code still executes the new
> version.
>
> After thinking about it a bit, I suppose that the compiler can insert
> a check at the beginning of all the statically compiled methods to
> check if it has been removed or replaced and delegate to the dynamic
> dispatch mechanism in that event.
>
> Matt
>
> On 10/9/07, hlovatt <[EMAIL PROTECTED]> wrote:
>
>
>
> > @Matt,
>
> > You can redefine compile time methods, e.g. if a method is removed
> > then provided that the method is in the super class the method body is
> > replaced with:
>
> > return super.name( ... )
>
> > A similar technique to the one above is used if the removed method is
> > in a mix-in. If the removed method isn't in the super class or a mix-
> > in then:
>
> > return addedMethod( methodID, ... )
>
> > Howard.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "JVM
Languages" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/jvm-languages?hl=en
-~----------~----~----~----~------~----~------~--~---