Andrew Haley wrote:
> However, as for overhead -- I don't believe it.  I doubt that not
> having this parameter saves anything much on any VM.

That's just your lack of imagination ;-) I was concerned with two
aspects wrt performance:
1) Class literals are inefficient -- this is no longer an issue to me,
since I now use ecj (in 1.5 mode) to compile GNU Classpath
2) I have to do multiple (partial) stack walks to retrieve multiple
frames

Remember, IKVM is built on top of another VM, so I have to use another
stack walking abstraction to walk the stack. Having to fetch multiple
frames is obviously more expensive than having to fetch a single frame.

*BUT* I have much stronger objections against this model:
1) Like Archie points out, there is no need for this additional
functionality (at least not in the common case)
2) It is very easy to introduce subtle bugs (like the one with the
override I showed)
3) It is tempting to do (either on purpose or accidentally):
  class Foo
  {
    somemethod()
    {
       // "we know we're always being called by Bar and we need its
caller"
       GetCaller(Bar.class);
    }
  }
4) It makes "advanced" optimizations by the JIT harder (the current
interface is very easy for the JIT to special case)

Regards,
Jeroen


_______________________________________________
Classpath mailing list
Classpath@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath

Reply via email to