Andrew Haley wrote: > The current gnu.classpath.VMStackWalker interface is inefficient. > > Sun provide: > > sun.reflect.reflection.getCallerClass(int depth) > > and for the same function we would do > > VMStackWalker.getClassContext()[depth]; > > You see the difference: Classpath's VMStackWalker enumerates the whole > stack, whereas Sun's only has to enumerate a few stack frames. > > I would like to add a new method to VMStackWalker that has exactly the > same interface as sun.reflect.reflection.getCallerClass. > > This is an obvious reference implementation: > > static Class getCallerClass(int depth) > { > Class[] stack = getClassContext(); > if (depth < stack.length) > return stack[depth]; > else > return null; > } > > If we had this interface, it would reduce the number of places where > libgcj diverges from classpath, because in gcj we would be able to use > VMStackWalker rather than gcj's internal stacktrace machinery. It > wouldn't work everywhere, but it woud be useful in a number of places. > Looks reasonable to me. Should the RI throw an exception if depth >= stack.length, though?