150 // and require access to TLS and the return pc. jvmti stubs always
151 // employ jump 0, and require no special access
152 #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub) \
153 do_blob(uncommon_trap, UncommonTrapBlob*) \
154 do_blob(exception, ExceptionBlob*) \
155 do_stub(new_instance, 0, true, false) \
156 do_stub(new_array, 0, true, false) \
157 do_stub(new_array_nozero, 0, true, false) \
158 do_stub(multianewarray2, 0, true, false) \
159 do_stub(multianewarray3, 0, true, false) \
160 do_stub(multianewarray4, 0, true, false) \
161 do_stub(multianewarray5, 0, true, false) \
162 do_stub(multianewarrayN, 0, true, false) \
163 C2_JVMTI_STUBS_DO(do_jvmti_stub) \
164 do_stub(complete_monitor_locking, 0, false, false) \
165 do_stub(monitor_notify, 0, false, false) \
166 do_stub(monitor_notifyAll, 0, false, false) \
167 do_stub(rethrow, 2, true, true) \
168 do_stub(slow_arraycopy, 0, false, false) \
169 do_stub(register_finalizer, 0, false, false) \
170
171 #else
172 #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub)
173 #endif
174
175 // Stub Generator Blobs and Stubs Overview
176 //
177 // StubGenerator stubs do not require their own individual blob. They
178 // are generated in batches into one of four distinct BufferBlobs:
179 //
180 // 1) Initial stubs
181 // 2) Continuation stubs
182 // 3) Compiler stubs
183 // 4) Final stubs
184 //
185 // Creation of each successive BufferBlobs is staged to ensure that
186 // specific VM subsystems required by those stubs are suitably
187 // initialized before generated code attempt to reference data or
188 // addresses exported by those subsystems. The sequencing of
189 // initialization must be taken into account when adding a new stub
|
150 // and require access to TLS and the return pc. jvmti stubs always
151 // employ jump 0, and require no special access
152 #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub) \
153 do_blob(uncommon_trap, UncommonTrapBlob*) \
154 do_blob(exception, ExceptionBlob*) \
155 do_stub(new_instance, 0, true, false) \
156 do_stub(new_array, 0, true, false) \
157 do_stub(new_array_nozero, 0, true, false) \
158 do_stub(multianewarray2, 0, true, false) \
159 do_stub(multianewarray3, 0, true, false) \
160 do_stub(multianewarray4, 0, true, false) \
161 do_stub(multianewarray5, 0, true, false) \
162 do_stub(multianewarrayN, 0, true, false) \
163 C2_JVMTI_STUBS_DO(do_jvmti_stub) \
164 do_stub(complete_monitor_locking, 0, false, false) \
165 do_stub(monitor_notify, 0, false, false) \
166 do_stub(monitor_notifyAll, 0, false, false) \
167 do_stub(rethrow, 2, true, true) \
168 do_stub(slow_arraycopy, 0, false, false) \
169 do_stub(register_finalizer, 0, false, false) \
170 do_stub(class_init_barrier, 0, false, false) \
171
172 #else
173 #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub)
174 #endif
175
176 // Stub Generator Blobs and Stubs Overview
177 //
178 // StubGenerator stubs do not require their own individual blob. They
179 // are generated in batches into one of four distinct BufferBlobs:
180 //
181 // 1) Initial stubs
182 // 2) Continuation stubs
183 // 3) Compiler stubs
184 // 4) Final stubs
185 //
186 // Creation of each successive BufferBlobs is staged to ensure that
187 // specific VM subsystems required by those stubs are suitably
188 // initialized before generated code attempt to reference data or
189 // addresses exported by those subsystems. The sequencing of
190 // initialization must be taken into account when adding a new stub
|