java exception
Yang Chang
yang@cs.york.ac.uk
Mon Jun 27 08:13:00 GMT 2005
Thank you very much! But since gen_reg_rtx doesn't generate rtx for a
specific register, how can the unwind functions know which register to
store the reference to _Unwind_RaiseException?
cheers
yang
At 15:31 24/06/2005 -0400, you wrote:
>Yang Chang wrote:
>>>I am trying to understand the GCJ implementation of Java exception
>>mechanism. Currently, I am aware of that the GCJ compiler uses the return
>>value of a "gen_reg_rtx(ptr_mode);" (in function
>>"get_exception_pointer") to represent something which holds a reference
>>to an _Unwind_Exception struct and such a reference is passed to function
>>_Unwind_RaiseException in libjava. However, I couldn't figure out how the
>>two things map each other. I mean, how the _Unwind_RaiseException or some
>>other lower level functions assign the aforementioned reference to what
>>that rtx represents? and what that rtx really represents?
>>>The code you are looking at is used when generating an exception
>_handler_. When the unwind mechanism gives control to the handler, the
>exception object that was thrown needs to be passed to it somehow.
>get_exception_pointer yields an RTL expression (in this case a REG, ie a
>register) where a pointer to the _Unwind_Exception will be found. The
>_Unwind_Exception will be put in that register by the unwinder before it
>jumps into the handler. You'll want to look in gcc/unwind* and
>libjava/exception.cc for the code for the unwinder itself.
>>Bryce
More information about the Java
mailing list