X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Fi386%2Fasmpart.S;h=b9be6e191288c242139bfc018248b49e875043d0;hb=d62d56aa9150bb2156dac82966795fdcbd7562e0;hp=c02885c4f8ca5ef6c354e36186c2c89b783a61e5;hpb=fc80dd09039a86c59a328e4d2f78ec06f4fb0baa;p=cacao.git diff --git a/src/vm/jit/i386/asmpart.S b/src/vm/jit/i386/asmpart.S index c02885c4f..b9be6e191 100644 --- a/src/vm/jit/i386/asmpart.S +++ b/src/vm/jit/i386/asmpart.S @@ -1,9 +1,7 @@ /* src/vm/jit/i386/asmpart.S - Java-C interface functions for i386 - Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel, - C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring, - E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, - J. Wenninger, Institut f. Computersprachen - TU Wien + Copyright (C) 1996-2005, 2006, 2007, 2008 + CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO This file is part of CACAO. @@ -64,7 +62,9 @@ .globl asm_compare_and_swap .globl asm_memory_barrier - .globl asm_get_cycle_count +#if defined(ENABLE_ESCAPE_CHECK) + .globl asm_escape_check +#endif /* asm_md_init ***************************************************************** @@ -122,7 +122,7 @@ asm_vm_call_method_long: asm_vm_call_method_float: asm_vm_call_method_double: push bp - mov sp,bp /* save stackptr */ + mov sp,bp /* save stack pointer */ sub $(4*4),sp /* create stackframe */ and $0xfffffff0,sp /* align stack to 16-byte */ @@ -217,7 +217,7 @@ L_asm_handle_exception_stack_loop: mov t0,8*4(sp) /* save maybe-leaf flag */ mov xpc,0*4(sp) /* pass exception pc */ - call codegen_get_pv_from_pc + call methodtree_find mov v0,6*4(sp) /* save data segment pointer */ mov 4*4(sp),itmp3 /* pass exception pointer */ @@ -414,16 +414,29 @@ asm_memory_barrier: lock; add $0,0(sp) ret - -/* asm_get_cycle_count ********************************************************* - Get the current time-stamp counter from the CPU. +#if defined(ENABLE_ESCAPE_CHECK) +asm_escape_check: + sub $24,%esp -*******************************************************************************/ + mov t0, 4(%esp) + mov itmp1, 8(%esp) + mov itmp2, 12(%esp) + mov itmp3, 16(%esp) + + mov 28(%esp), itmp1 + mov itmp1, (%esp) -asm_get_cycle_count: - rdtsc + call escape_analysis_escape_check + + mov 4(%esp), t0 + mov 8(%esp), itmp1 + mov 12(%esp), itmp2 + mov 16(%esp), itmp3 + + add $24,sp ret +#endif /* disable exec-stacks ********************************************************/ @@ -432,7 +445,6 @@ asm_get_cycle_count: .section .note.GNU-stack,"",%progbits #endif - /* * These are local overrides for various environment variables in Emacs. * Please do not remove this and leave it at the end of the file, where