From: Godmar Back (gback@cs.utah.edu)
Date: Fri Dec 04 1998 - 11:56:37 EST
Having stack overflow errors flagged is pretty cool, isn't it?
Still, having to pay a soft call per method invocation is a pretty
hefty price.
I think there's potential for improvement, and it all starts with
reworking the heinous thread interface and allowing for more inlining.
Actually, for things like stack overflow, the threading system would
have to actually emit code, it seems. This would require that the jit
system "export" some interfaces to do that which the threading subsystem
can then use.
But, absent truely inlined stack overflow checks, at least getting
rid of the softcall -> indirect function call sequence in favor of
softcall -> inlined direct function call might make sense.
So, getting back to Tim's earlier comment that we should focus on the
things in Kaffe that really suck, now that we've focussed some on
gc (precise heap gc, better VM behavior), I think we might want to look
at the threading interface.
Also, Tim, what was your rationale for not implementing stack overflow?
Was it just a matter of time or a conscious performance-related decision?
Happy hacking,
Godmar
ps: I'm already on to the next lost wakeup in jthreads...
>
> java.lang.StackOverflowError=0A=
> at java/awt/Graphics.getGraphics(line unknown, pc 0x857a820)=0A=
> at java/awt/Window.repaint(216)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Component.update(901)=0A=
> at java/awt/Window.repaint(220)=0A=
> at java/awt/Component.setBounds(782)=0A=
> at BurnIT.paint(79)=0A=
> at java/awt/Window.processPaintEvent(155)=0A=
> at java/awt/AWTEvent.processPaintEvent(481)=0A=
> at java/awt/event/PaintEvent.dispatch(32)=0A=
> at java/awt/EventDispatchThread.show(126)=0A=
> at java/awt/WMEvent.dispatch(48)=0A=
> at java/awt/EventDispatchThread.run(38)=0A=
> X connection to :0.0 broken (explicit kill or server shutdown).=0A=
>
> ------ =_NextPart_000_01BE1FA5.4715A05C--
>
This archive was generated by hypermail 2b29 : Sat Sep 23 2000 - 19:57:05 EDT