CACAO
linker.hpp
Go to the documentation of this file.
1 /* src/vm/linker.hpp - class linker header
2 
3  Copyright (C) 1996-2014
4  CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
5 
6  This file is part of CACAO.
7 
8  This program is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License as
10  published by the Free Software Foundation; either version 2, or (at
11  your option) any later version.
12 
13  This program is distributed in the hope that it will be useful, but
14  WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  02110-1301, USA.
22 
23 */
24 
25 
26 #ifndef LINKER_HPP_
27 #define LINKER_HPP_ 1
28 
29 #include "config.h"
30 #include "arch.hpp" // for USES_NEW_SUBTYPE
31 #include "vm/utf8.hpp"
32 
33 struct java_object_t;
34 struct classinfo;
35 class Mutex;
36 
37 
38 /* global variables ***********************************************************/
39 
40 /* This lock must be taken while renumbering classes or while atomically */
41 /* accessing classes. */
42 
43 #if USES_NEW_SUBTYPE
44 
45 #define LOCK_CLASSRENUMBER_LOCK /* nothing */
46 #define UNLOCK_CLASSRENUMBER_LOCK /* nothing */
47 
48 #else
50 
51 #define LOCK_CLASSRENUMBER_LOCK linker_classrenumber_lock->lock()
52 #define UNLOCK_CLASSRENUMBER_LOCK linker_classrenumber_lock->unlock()
53 
54 #endif
55 
56 
57 /* function prototypes ********************************************************/
58 
59 void linker_preinit(void);
60 void linker_init(void);
61 
64 
66 
67 #endif // LINKER_HPP_
68 
69 
70 /*
71  * These are local overrides for various environment variables in Emacs.
72  * Please do not remove this and leave it at the end of the file, where
73  * Emacs will automagically detect them.
74  * ---------------------------------------------------------------------
75  * Local variables:
76  * mode: c++
77  * indent-tabs-mode: t
78  * c-basic-offset: 4
79  * tab-width: 4
80  * End:
81  * vim:noexpandtab:sw=4:ts=4:
82  */
void linker_init(void)
Definition: linker.cpp:166
void linker_preinit(void)
Definition: linker.cpp:131
void linker_initialize_deferred_strings()
Definition: linker.cpp:1192
Dummy implementation of a mutex.
Definition: mutex-none.hpp:33
void linker_create_string_later(java_object_t **a, Utf8String u)
Definition: linker.cpp:1187
Mutex * linker_classrenumber_lock
Definition: linker.cpp:106
classinfo * link_class(classinfo *c)
Definition: linker.cpp:378