function.
* src/vm/exceptions.h (exceptions_asm_new_abstractmethoderror): Added.
* src/vm/jit/x86_64/asmpart.S (asm_abstractmethoderror): Use
exceptions_asm_new_abstractmethoderror.
* src/vm/jit/i386/asmpart.S (asm_abstractmethoderror): Likewise.
Changes: Edwin Steiner
- $Id: exceptions.c 5053 2006-06-28 19:11:20Z twisti $
+ $Id: exceptions.c 5054 2006-06-28 19:43:42Z twisti $
*/
}
+/* exceptions_asm_new_abstractmethoderror **************************************
+
+ Generates a java.lang.AbstractMethodError for
+ asm_abstractmethoderror.
+
+*******************************************************************************/
+
+java_objectheader *exceptions_asm_new_abstractmethoderror(u1 *sp, u1 *ra)
+{
+ stackframeinfo sfi;
+ java_objectheader *e;
+
+ /* create the stackframeinfo (XPC is equal to RA) */
+
+ stacktrace_create_extern_stackframeinfo(&sfi, NULL, sp, ra, ra);
+
+ /* create the exception */
+
+ e = exceptions_new_abstractmethoderror();
+
+ /* remove the stackframeinfo */
+
+ stacktrace_remove_stackframeinfo(&sfi);
+
+ return e;
+}
+
+
/* exceptions_throw_abstractmethoderror ****************************************
Generates a java.lang.AbstractMethodError for the VM and throws it.
Changes: Edwin Steiner
- $Id: exceptions.h 5053 2006-06-28 19:11:20Z twisti $
+ $Id: exceptions.h 5054 2006-06-28 19:43:42Z twisti $
*/
/* functions to generate compiler exceptions */
java_objectheader *exceptions_new_abstractmethoderror(void);
+java_objectheader *exceptions_asm_new_abstractmethoderror(u1 *sp, u1 *ra);
void exceptions_throw_abstractmethoderror(void);
java_objectheader *new_classformaterror(classinfo *c, const char *message, ...);
Changes: Joseph Wenninger
Edwin Steiner
- $Id: asmpart.S 5053 2006-06-28 19:11:20Z twisti $
+ $Id: asmpart.S 5054 2006-06-28 19:43:42Z twisti $
*/
*******************************************************************************/
asm_abstractmethoderror:
- call exceptions_new_abstractmethoderror
+ sub $(2*4),sp /* create stack frame */
+ mov sp,itmp1 /* pass java sp */
+ add $((1+2)*4),itmp1
+ mov itmp1,0*4(sp)
+ mov 2*4(sp),itmp2 /* pass exception address */
+ sub $2,itmp2
+ mov itmp2,1*4(sp)
+ call exceptions_asm_new_abstractmethoderror
/* exception pointer is return value */
+ add $(2*4),sp /* remove stack frame */
+
pop xpc /* get exception address */
sub $2,xpc /* exception address is ra - 2 */
jmp L_asm_handle_exception
Changes: Edwin Steiner
- $Id: asmpart.S 5053 2006-06-28 19:11:20Z twisti $
+ $Id: asmpart.S 5054 2006-06-28 19:43:42Z twisti $
*/
.globl asm_vm_call_method_exception_handler
.globl asm_call_jit_compiler
+
.globl asm_handle_exception
.globl asm_handle_nat_exception
*******************************************************************************/
asm_abstractmethoderror:
- call exceptions_new_abstractmethoderror@PLT
+ mov sp,a0 /* pass java sp */
+ add $1*8,a0
+ mov 0*8(sp),a1 /* pass exception address */
+ sub $3,a1
+ call exceptions_asm_new_abstractmethoderror@PLT
/* exception pointer is return value */
pop xpc /* get exception address */
- sub $5,xpc /* exception address is ra - 5 */
+ sub $3,xpc /* exception address is ra - 3 */
jmp L_asm_handle_exception