CACAO
md.c
Go to the documentation of this file.
1 /* src/vm/jit/intrp/md.c - machine dependent Interpreter functions
2 
3  Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
4  C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
5  E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
6  J. Wenninger, Institut f. Computersprachen - TU Wien
7 
8  This file is part of CACAO.
9 
10  This program is free software; you can redistribute it and/or
11  modify it under the terms of the GNU General Public License as
12  published by the Free Software Foundation; either version 2, or (at
13  your option) any later version.
14 
15  This program is distributed in the hope that it will be useful, but
16  WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  General Public License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with this program; if not, write to the Free Software
22  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23  02110-1301, USA.
24 
25  Contact: cacao@cacaojvm.org
26 
27  Authors: Andreas Krall
28  Reinhard Grafl
29 
30  Changes: Joseph Wenninger
31  Christian Thalinger
32 
33 
34 */
35 
36 
37 #include "config.h"
38 
39 #include <assert.h>
40 #include <stdlib.h>
41 #include <signal.h>
42 
43 #include "vm/types.hpp"
44 
45 #include "vm/jit/intrp/intrp.h"
46 
47 
48 Inst *vm_prim = NULL; /* initialized by md_init() */
49 FILE *vm_out = NULL; /* debugging output for vmgenerated stuff */
50 
51 
52 /* md_init *********************************************************************
53 
54  Do some machine dependent initialization.
55 
56 *******************************************************************************/
57 
58 void intrp_md_init(void)
59 {
60  vm_out = stderr;
61 
62  if (setvbuf(stdout,NULL, _IOLBF,0) != 0) {
63  perror("setvbuf error");
64  exit(1);
65  }
66 
67  if ( vm_prim == NULL ) {
68  vm_prim = (Inst *)engine(NULL, NULL, NULL);
69  }
70 
71  if (peeptable == 0) {
73  }
74 
76 }
77 
78 
79 /* md_stacktrace_get_returnaddress *********************************************
80 
81  Returns the return address of the current stackframe, specified by
82  the passed stack pointer and the stack frame size.
83 
84 *******************************************************************************/
85 
87 {
88  u1 *ra;
89 
90  /* ATTENTION: the passed sp is actually the fp! (see java.vmg for stack
91  layout) */
92 
93  ra = *((u1 **) (sp - framesize - sizeof(void *)));
94 
95  return ra;
96 }
97 
98 
99 /*
100  * These are local overrides for various environment variables in Emacs.
101  * Please do not remove this and leave it at the end of the file, where
102  * Emacs will automagically detect them.
103  * ---------------------------------------------------------------------
104  * Local variables:
105  * mode: c
106  * indent-tabs-mode: t
107  * c-basic-offset: 4
108  * tab-width: 4
109  * End:
110  */
#define ra
Definition: md-asm.hpp:62
Inst * vm_prim
Definition: md.c:48
u1 * intrp_md_stacktrace_get_returnaddress(u1 *sp, u4 framesize)
Definition: md.c:86
uint8_t u1
Definition: types.hpp:40
void init_peeptable(void)
Definition: peephole.c:82
void intrp_md_init(void)
Definition: md.c:58
void * Inst
Definition: intrp.h:58
uint32_t u4
Definition: types.hpp:46
#define sp
Definition: md-asm.hpp:81
#define engine
Definition: engine2.c:34
FILE * vm_out
Definition: md.c:49
void dynamic_super_init(void)
Cell peeptable
Definition: peephole.c:57