18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_CODE_STUBS_HPP
26 #define SHARE_VM_CODE_STUBS_HPP
27
28 #include "memory/allocation.hpp"
29 #ifdef TARGET_OS_FAMILY_linux
30 # include "os_linux.inline.hpp"
31 #endif
32 #ifdef TARGET_OS_FAMILY_solaris
33 # include "os_solaris.inline.hpp"
34 #endif
35 #ifdef TARGET_OS_FAMILY_windows
36 # include "os_windows.inline.hpp"
37 #endif
38
39 // The classes in this file provide a simple framework for the
40 // management of little pieces of machine code - or stubs -
41 // created on the fly and frequently discarded. In this frame-
42 // work stubs are stored in a queue.
43
44
45 // Stub serves as abstract base class. A concrete stub
46 // implementation is a subclass of Stub, implementing
47 // all (non-virtual!) functions required sketched out
48 // in the Stub class.
49 //
50 // A concrete stub layout may look like this (both data
51 // and code sections could be empty as well):
52 //
53 // ________
54 // stub -->| | <--+
55 // | data | |
56 // |________| |
57 // code_begin -->| | |
|
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_CODE_STUBS_HPP
26 #define SHARE_VM_CODE_STUBS_HPP
27
28 #include "memory/allocation.hpp"
29 #ifdef TARGET_OS_FAMILY_linux
30 # include "os_linux.inline.hpp"
31 #endif
32 #ifdef TARGET_OS_FAMILY_solaris
33 # include "os_solaris.inline.hpp"
34 #endif
35 #ifdef TARGET_OS_FAMILY_windows
36 # include "os_windows.inline.hpp"
37 #endif
38 #ifdef TARGET_OS_FAMILY_bsd
39 # include "os_bsd.inline.hpp"
40 #endif
41
42 // The classes in this file provide a simple framework for the
43 // management of little pieces of machine code - or stubs -
44 // created on the fly and frequently discarded. In this frame-
45 // work stubs are stored in a queue.
46
47
48 // Stub serves as abstract base class. A concrete stub
49 // implementation is a subclass of Stub, implementing
50 // all (non-virtual!) functions required sketched out
51 // in the Stub class.
52 //
53 // A concrete stub layout may look like this (both data
54 // and code sections could be empty as well):
55 //
56 // ________
57 // stub -->| | <--+
58 // | data | |
59 // |________| |
60 // code_begin -->| | |
|