1 /*
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
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 *
67 // Scheme for adding a new entry point:
68 //
69 // 1. determine if it's a platform-dependent or independent entry point
70 // a) if platform independent: make subsequent changes in the independent files
71 // b) if platform dependent: make subsequent changes in the dependent files
72 // 2. add a private instance variable holding the entry point address
73 // 3. add a public accessor function to the instance variable
74 // 4. implement the corresponding generator function in the platform-dependent
75 // stubGenerator_<arch>.cpp file and call the function in generate_all() of that file
76
77
78 class StubRoutines: AllStatic {
79
80 public:
81 enum platform_independent_constants {
82 max_size_of_parameters = 256 // max. parameter size supported by megamorphic lookups
83 };
84
85 // Dependencies
86 friend class StubGenerator;
87 #ifdef TARGET_ARCH_MODEL_x86_32
88 # include "stubRoutines_x86_32.hpp"
89 #endif
90 #ifdef TARGET_ARCH_MODEL_x86_64
91 # include "stubRoutines_x86_64.hpp"
92 #endif
93 #ifdef TARGET_ARCH_MODEL_sparc
94 # include "stubRoutines_sparc.hpp"
95 #endif
96 #ifdef TARGET_ARCH_MODEL_zero
97 # include "stubRoutines_zero.hpp"
98 #endif
99 #ifdef TARGET_ARCH_MODEL_arm
100 # include "stubRoutines_arm.hpp"
101 #endif
102 #ifdef TARGET_ARCH_MODEL_ppc_32
103 # include "stubRoutines_ppc_32.hpp"
104 #endif
105 #ifdef TARGET_ARCH_MODEL_ppc_64
106 # include "stubRoutines_ppc_64.hpp"
107 #endif
108 #ifdef TARGET_ARCH_MODEL_aarch64
109 # include "stubRoutines_aarch64.hpp"
110 #endif
111
112
113 static jint _verify_oop_count;
114 static address _verify_oop_subroutine_entry;
115
116 static address _call_stub_return_address; // the return PC, when returning to a call stub
117 static address _call_stub_entry;
118 static address _forward_exception_entry;
119 static address _catch_exception_entry;
120 static address _throw_AbstractMethodError_entry;
121 static address _throw_IncompatibleClassChangeError_entry;
122 static address _throw_NullPointerException_at_call_entry;
123 static address _throw_StackOverflowError_entry;
124 static address _handler_for_unsafe_access_entry;
125
126 static address _atomic_xchg_entry;
127 static address _atomic_xchg_ptr_entry;
128 static address _atomic_store_entry;
129 static address _atomic_store_ptr_entry;
130 static address _atomic_cmpxchg_entry;
131 static address _atomic_cmpxchg_ptr_entry;
|
1 /*
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
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 *
67 // Scheme for adding a new entry point:
68 //
69 // 1. determine if it's a platform-dependent or independent entry point
70 // a) if platform independent: make subsequent changes in the independent files
71 // b) if platform dependent: make subsequent changes in the dependent files
72 // 2. add a private instance variable holding the entry point address
73 // 3. add a public accessor function to the instance variable
74 // 4. implement the corresponding generator function in the platform-dependent
75 // stubGenerator_<arch>.cpp file and call the function in generate_all() of that file
76
77
78 class StubRoutines: AllStatic {
79
80 public:
81 enum platform_independent_constants {
82 max_size_of_parameters = 256 // max. parameter size supported by megamorphic lookups
83 };
84
85 // Dependencies
86 friend class StubGenerator;
87 #if defined STUBROUTINES_MD_HPP
88 # include STUBROUTINES_MD_HPP
89 #elif defined TARGET_ARCH_MODEL_x86_32
90 # include "stubRoutines_x86_32.hpp"
91 #elif defined TARGET_ARCH_MODEL_x86_64
92 # include "stubRoutines_x86_64.hpp"
93 #elif defined TARGET_ARCH_MODEL_sparc
94 # include "stubRoutines_sparc.hpp"
95 #elif defined TARGET_ARCH_MODEL_zero
96 # include "stubRoutines_zero.hpp"
97 #elif defined TARGET_ARCH_MODEL_ppc_64
98 # include "stubRoutines_ppc_64.hpp"
99 #elif defined TARGET_ARCH_MODEL_aarch64
100 # include "stubRoutines_aarch64.hpp"
101 #endif
102
103 static jint _verify_oop_count;
104 static address _verify_oop_subroutine_entry;
105
106 static address _call_stub_return_address; // the return PC, when returning to a call stub
107 static address _call_stub_entry;
108 static address _forward_exception_entry;
109 static address _catch_exception_entry;
110 static address _throw_AbstractMethodError_entry;
111 static address _throw_IncompatibleClassChangeError_entry;
112 static address _throw_NullPointerException_at_call_entry;
113 static address _throw_StackOverflowError_entry;
114 static address _handler_for_unsafe_access_entry;
115
116 static address _atomic_xchg_entry;
117 static address _atomic_xchg_ptr_entry;
118 static address _atomic_store_entry;
119 static address _atomic_store_ptr_entry;
120 static address _atomic_cmpxchg_entry;
121 static address _atomic_cmpxchg_ptr_entry;
|