< prev index next >

src/cpu/zero/vm/stubGenerator_zero.cpp

Print this page
@  rev 7996 : 8075533: Zero JVM segfaults for -version after JDK-8074552
|


 159       StubRoutines::_jshort_disjoint_arraycopy;
 160     StubRoutines::_arrayof_jshort_arraycopy =
 161       StubRoutines::_jshort_arraycopy;
 162 
 163     StubRoutines::_arrayof_jint_disjoint_arraycopy =
 164       StubRoutines::_jint_disjoint_arraycopy;
 165     StubRoutines::_arrayof_jint_arraycopy =
 166       StubRoutines::_jint_arraycopy;
 167 
 168     StubRoutines::_arrayof_jlong_disjoint_arraycopy =
 169       StubRoutines::_jlong_disjoint_arraycopy;
 170     StubRoutines::_arrayof_jlong_arraycopy =
 171       StubRoutines::_jlong_arraycopy;
 172 
 173     StubRoutines::_arrayof_oop_disjoint_arraycopy =
 174       StubRoutines::_oop_disjoint_arraycopy;
 175     StubRoutines::_arrayof_oop_arraycopy =
 176       StubRoutines::_oop_arraycopy;
 177   }
 178 
 179   static int SafeFetch32(int *adr, int errValue) {
 180     int value = errValue;
 181     value = *adr;
 182     return value;
 183   }
 184 
 185   static intptr_t SafeFetchN(intptr_t *adr, intptr_t errValue) {
 186     intptr_t value = errValue;
 187     value = *adr;
 188     return value;
 189   }
 190 
 191 
 192   void generate_initial() {
 193     // Generates all stubs and initializes the entry points
 194 
 195     // entry points that exist in all platforms Note: This is code
 196     // that could be shared among different platforms - however the
 197     // benefit seems to be smaller than the disadvantage of having a
 198     // much more complicated generator structure. See also comment in
 199     // stubRoutines.hpp.
 200 
 201     StubRoutines::_forward_exception_entry   = ShouldNotCallThisStub();
 202     StubRoutines::_call_stub_entry           = (address) call_stub;
 203     StubRoutines::_catch_exception_entry     = ShouldNotCallThisStub();
 204 
 205     // atomic calls
 206     StubRoutines::_atomic_xchg_entry         = ShouldNotCallThisStub();
 207     StubRoutines::_atomic_xchg_ptr_entry     = ShouldNotCallThisStub();
 208     StubRoutines::_atomic_cmpxchg_entry      = ShouldNotCallThisStub();
 209     StubRoutines::_atomic_cmpxchg_ptr_entry  = ShouldNotCallThisStub();
 210     StubRoutines::_atomic_cmpxchg_byte_entry = ShouldNotCallThisStub();
 211     StubRoutines::_atomic_cmpxchg_long_entry = ShouldNotCallThisStub();


 224     // These entry points require SharedInfo::stack0 to be set up in
 225     // non-core builds and need to be relocatable, so they each
 226     // fabricate a RuntimeStub internally.
 227     StubRoutines::_throw_AbstractMethodError_entry =
 228       ShouldNotCallThisStub();
 229 
 230     StubRoutines::_throw_NullPointerException_at_call_entry =
 231       ShouldNotCallThisStub();
 232 
 233     StubRoutines::_throw_StackOverflowError_entry =
 234       ShouldNotCallThisStub();
 235 
 236     // support for verify_oop (must happen after universe_init)
 237     StubRoutines::_verify_oop_subroutine_entry =
 238       ShouldNotCallThisStub();
 239 
 240     // arraycopy stubs used by compilers
 241     generate_arraycopy_stubs();
 242 
 243     // Safefetch stubs.
 244     StubRoutines::_safefetch32_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetch32);
 245     StubRoutines::_safefetch32_fault_pc = NULL;
 246     StubRoutines::_safefetch32_continuation_pc = NULL;
 247 
 248     StubRoutines::_safefetchN_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetchN);
 249     StubRoutines::_safefetchN_fault_pc = NULL;
 250     StubRoutines::_safefetchN_continuation_pc = NULL;
 251   }
 252 
 253  public:
 254   StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) {
 255     if (all) {
 256       generate_all();
 257     } else {
 258       generate_initial();
 259     }
 260   }
 261 };
 262 
 263 void StubGenerator_generate(CodeBuffer* code, bool all) {
 264   StubGenerator g(code, all);
 265 }
 266 
 267 EntryFrame *EntryFrame::build(const intptr_t*  parameters,
 268                               int              parameter_words,




 159       StubRoutines::_jshort_disjoint_arraycopy;
 160     StubRoutines::_arrayof_jshort_arraycopy =
 161       StubRoutines::_jshort_arraycopy;
 162 
 163     StubRoutines::_arrayof_jint_disjoint_arraycopy =
 164       StubRoutines::_jint_disjoint_arraycopy;
 165     StubRoutines::_arrayof_jint_arraycopy =
 166       StubRoutines::_jint_arraycopy;
 167 
 168     StubRoutines::_arrayof_jlong_disjoint_arraycopy =
 169       StubRoutines::_jlong_disjoint_arraycopy;
 170     StubRoutines::_arrayof_jlong_arraycopy =
 171       StubRoutines::_jlong_arraycopy;
 172 
 173     StubRoutines::_arrayof_oop_disjoint_arraycopy =
 174       StubRoutines::_oop_disjoint_arraycopy;
 175     StubRoutines::_arrayof_oop_arraycopy =
 176       StubRoutines::_oop_arraycopy;
 177   }
 178 













 179   void generate_initial() {
 180     // Generates all stubs and initializes the entry points
 181 
 182     // entry points that exist in all platforms Note: This is code
 183     // that could be shared among different platforms - however the
 184     // benefit seems to be smaller than the disadvantage of having a
 185     // much more complicated generator structure. See also comment in
 186     // stubRoutines.hpp.
 187 
 188     StubRoutines::_forward_exception_entry   = ShouldNotCallThisStub();
 189     StubRoutines::_call_stub_entry           = (address) call_stub;
 190     StubRoutines::_catch_exception_entry     = ShouldNotCallThisStub();
 191 
 192     // atomic calls
 193     StubRoutines::_atomic_xchg_entry         = ShouldNotCallThisStub();
 194     StubRoutines::_atomic_xchg_ptr_entry     = ShouldNotCallThisStub();
 195     StubRoutines::_atomic_cmpxchg_entry      = ShouldNotCallThisStub();
 196     StubRoutines::_atomic_cmpxchg_ptr_entry  = ShouldNotCallThisStub();
 197     StubRoutines::_atomic_cmpxchg_byte_entry = ShouldNotCallThisStub();
 198     StubRoutines::_atomic_cmpxchg_long_entry = ShouldNotCallThisStub();


 211     // These entry points require SharedInfo::stack0 to be set up in
 212     // non-core builds and need to be relocatable, so they each
 213     // fabricate a RuntimeStub internally.
 214     StubRoutines::_throw_AbstractMethodError_entry =
 215       ShouldNotCallThisStub();
 216 
 217     StubRoutines::_throw_NullPointerException_at_call_entry =
 218       ShouldNotCallThisStub();
 219 
 220     StubRoutines::_throw_StackOverflowError_entry =
 221       ShouldNotCallThisStub();
 222 
 223     // support for verify_oop (must happen after universe_init)
 224     StubRoutines::_verify_oop_subroutine_entry =
 225       ShouldNotCallThisStub();
 226 
 227     // arraycopy stubs used by compilers
 228     generate_arraycopy_stubs();
 229 
 230     // Safefetch stubs.
 231     StubRoutines::_safefetch32_entry = NULL;
 232     StubRoutines::_safefetch32_fault_pc = NULL;
 233     StubRoutines::_safefetch32_continuation_pc = NULL;
 234 
 235     StubRoutines::_safefetchN_entry = NULL;
 236     StubRoutines::_safefetchN_fault_pc = NULL;
 237     StubRoutines::_safefetchN_continuation_pc = NULL;
 238   }
 239 
 240  public:
 241   StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) {
 242     if (all) {
 243       generate_all();
 244     } else {
 245       generate_initial();
 246     }
 247   }
 248 };
 249 
 250 void StubGenerator_generate(CodeBuffer* code, bool all) {
 251   StubGenerator g(code, all);
 252 }
 253 
 254 EntryFrame *EntryFrame::build(const intptr_t*  parameters,
 255                               int              parameter_words,


< prev index next >