* src/vm/jit/codegen-common.cpp (codegen_emit): New generic version of the
[cacao.git] / src / vm / jit / i386 / md.h
index 562736be4f66d47c4fb2fd343d16a7d75a525a48..9bfa133732d07630da8dfad573d31a59e366fbeb 100644 (file)
@@ -1,6 +1,6 @@
 /* src/vm/jit/i386/md.h - machine dependent i386 functions
 
-   Copyright (C) 1996-2005, 2006, 2007, 2008
+   Copyright (C) 1996-2005, 2006, 2007, 2008, 2009
    CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
 
 /* inline functions ***********************************************************/
 
+/**
+ * Returns the size (in bytes) of the current stackframe, specified by
+ * the passed codeinfo structure.
+ */
+inline static int32_t md_stacktrace_get_framesize(codeinfo* code)
+{
+       int32_t stackframesize;
+
+       // Check for the asm_vm_call_method special case.
+       if (code == NULL)
+               return 0;
+
+       // On i386 we use 8-byte stackslots.
+       stackframesize = code->stackframesize * 8;
+
+       // If there is a stackframe present, we need to take the alignment
+       // compensation for the stored return address into account.
+       if (stackframesize != 0)
+               stackframesize += 4;
+
+       return stackframesize;
+}
+
+
 /* md_stacktrace_get_returnaddress *********************************************
 
    Returns the return address of the current stackframe, specified by