/* src/vm/jit/asmpart.h - prototypes for machine specfic functions
- Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+ 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
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Contact: cacao@cacaojvm.org
-
- Authors: Reinhard Grafl
- Andreas Krall
-
- Changes: Christian Thalinger
- Edwin Steiner
-
- $Id: asmpart.h 6147 2006-12-07 23:54:40Z edwin $
+ $Id: asmpart.h 7577 2007-03-25 20:55:06Z twisti $
*/
#include "config.h"
#include "vm/types.h"
-
#if defined(ENABLE_THREADS)
-# include "threads/native/threads.h"
-# include "threads/native/critical.h"
+# include "threads/critical.h"
#endif
#include "vm/global.h"
-#include "vm/linker.h"
-#include "vm/resolve.h"
#include "vm/vm.h"
+
#include "vm/jit/replace.h"
-#include "vm/jit/stacktrace.h"
+
+#include "vmcore/linker.h"
/* some macros ****************************************************************/
#endif /* defined(ENABLE_JIT) */
-typedef struct castinfo castinfo;
-
-struct castinfo {
- s4 super_baseval;
- s4 super_diffval;
- s4 sub_baseval;
-};
-
-
/* function prototypes ********************************************************/
/* machine dependent initialization */
double asm_vm_call_method_double(methodinfo *m, s4 vmargscount, vm_arg *vmargs);
void asm_vm_call_method_exception_handler(void);
+
+/* asm_vm_call_method_end is a dummy symbol marking the end of the asm_vm_call_method
+ * function and is used to insert the coderange into the avl tree.
+ */
+void asm_vm_call_method_end(void);
#endif
#if defined(ENABLE_INTRP)
void asm_patcher_wrapper(void);
/* functions for on-stack replacement */
+#if defined(ENABLE_REPLACEMENT)
void asm_replacement_out(void);
void asm_replacement_in(executionstate_t *es, replace_safestack_t *st);
+#endif
+
+long asm_compare_and_swap(volatile long *p, long oldval, long newval);
+void asm_memory_barrier(void);
#if defined(ENABLE_THREADS)
extern critical_section_node_t asm_criticalsections;