Exemplo n.º 1
0
  void generate_all() {
    // Generates all stubs and initializes the entry points

    // These entry points require SharedInfo::stack0 to be set up in
    // non-core builds and need to be relocatable, so they each
    // fabricate a RuntimeStub internally.
    StubRoutines::_throw_AbstractMethodError_entry =
      ShouldNotCallThisStub();

    StubRoutines::_throw_NullPointerException_at_call_entry =
      ShouldNotCallThisStub();

    StubRoutines::_throw_StackOverflowError_entry =
      ShouldNotCallThisStub();

    // support for verify_oop (must happen after universe_init)
    StubRoutines::_verify_oop_subroutine_entry =
      ShouldNotCallThisStub();

    // arraycopy stubs used by compilers
    generate_arraycopy_stubs();

    // Safefetch stubs.
    pthread_key_create(&g_jmpbuf_key, NULL);
    StubRoutines::_safefetch32_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetch32);
    StubRoutines::_safefetch32_fault_pc = NULL;
    StubRoutines::_safefetch32_continuation_pc = NULL;

    StubRoutines::_safefetchN_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetchN);
    StubRoutines::_safefetchN_fault_pc = NULL;
    StubRoutines::_safefetchN_continuation_pc = NULL;
  }
Exemplo n.º 2
0
  void generate_arraycopy_stubs() {
    // Call the conjoint generation methods immediately after
    // the disjoint ones so that short branches from the former
    // to the latter can be generated.
    StubRoutines::_jbyte_disjoint_arraycopy  = (address) fake_arraycopy_stub;
    StubRoutines::_jbyte_arraycopy           = (address) fake_arraycopy_stub;

    StubRoutines::_jshort_disjoint_arraycopy = (address) fake_arraycopy_stub;
    StubRoutines::_jshort_arraycopy          = (address) fake_arraycopy_stub;

    StubRoutines::_jint_disjoint_arraycopy   = (address) fake_arraycopy_stub;
    StubRoutines::_jint_arraycopy            = (address) fake_arraycopy_stub;

    StubRoutines::_jlong_disjoint_arraycopy  = (address) fake_arraycopy_stub;
    StubRoutines::_jlong_arraycopy           = (address) fake_arraycopy_stub;

    StubRoutines::_oop_disjoint_arraycopy    = ShouldNotCallThisStub();
    StubRoutines::_oop_arraycopy             = ShouldNotCallThisStub();

    StubRoutines::_checkcast_arraycopy       = ShouldNotCallThisStub();
    StubRoutines::_unsafe_arraycopy          = ShouldNotCallThisStub();
    StubRoutines::_generic_arraycopy         = ShouldNotCallThisStub();

    // We don't generate specialized code for HeapWord-aligned source
    // arrays, so just use the code we've already generated
    StubRoutines::_arrayof_jbyte_disjoint_arraycopy =
      StubRoutines::_jbyte_disjoint_arraycopy;
    StubRoutines::_arrayof_jbyte_arraycopy =
      StubRoutines::_jbyte_arraycopy;

    StubRoutines::_arrayof_jshort_disjoint_arraycopy =
      StubRoutines::_jshort_disjoint_arraycopy;
    StubRoutines::_arrayof_jshort_arraycopy =
      StubRoutines::_jshort_arraycopy;

    StubRoutines::_arrayof_jint_disjoint_arraycopy =
      StubRoutines::_jint_disjoint_arraycopy;
    StubRoutines::_arrayof_jint_arraycopy =
      StubRoutines::_jint_arraycopy;

    StubRoutines::_arrayof_jlong_disjoint_arraycopy =
      StubRoutines::_jlong_disjoint_arraycopy;
    StubRoutines::_arrayof_jlong_arraycopy =
      StubRoutines::_jlong_arraycopy;

    StubRoutines::_arrayof_oop_disjoint_arraycopy =
      StubRoutines::_oop_disjoint_arraycopy;
    StubRoutines::_arrayof_oop_arraycopy =
      StubRoutines::_oop_arraycopy;
  }
Exemplo n.º 3
0
  void generate_all() {
    // Generates all stubs and initializes the entry points

    // These entry points require SharedInfo::stack0 to be set up in
    // non-core builds and need to be relocatable, so they each
    // fabricate a RuntimeStub internally.
    StubRoutines::_throw_AbstractMethodError_entry =
      ShouldNotCallThisStub();

    StubRoutines::_throw_ArithmeticException_entry =
      ShouldNotCallThisStub();

    StubRoutines::_throw_NullPointerException_entry =
      ShouldNotCallThisStub();

    StubRoutines::_throw_NullPointerException_at_call_entry =
      ShouldNotCallThisStub();

    StubRoutines::_throw_StackOverflowError_entry =
      ShouldNotCallThisStub();

    // support for verify_oop (must happen after universe_init)
    StubRoutines::_verify_oop_subroutine_entry =
      ShouldNotCallThisStub();

    // arraycopy stubs used by compilers
    generate_arraycopy_stubs();
  }
Exemplo n.º 4
0
address CppInterpreterGenerator::generate_stack_to_native_abi_converter(
    BasicType type) {
  assembler()->advance(1);
  return ShouldNotCallThisStub();
}
Exemplo n.º 5
0
address CppInterpreterGenerator::generate_result_handler_for(
    BasicType type) {
  assembler()->advance(1);
  return ShouldNotCallThisStub();
}
Exemplo n.º 6
0
  void generate_initial() {
    // Generates all stubs and initializes the entry points

    // entry points that exist in all platforms Note: This is code
    // that could be shared among different platforms - however the
    // benefit seems to be smaller than the disadvantage of having a
    // much more complicated generator structure. See also comment in
    // stubRoutines.hpp.

    StubRoutines::_forward_exception_entry   = ShouldNotCallThisStub();
    StubRoutines::_call_stub_entry           = (address) call_stub;
    StubRoutines::_catch_exception_entry     = ShouldNotCallThisStub();

    // atomic calls
    StubRoutines::_atomic_xchg_entry         = ShouldNotCallThisStub();
    StubRoutines::_atomic_xchg_ptr_entry     = ShouldNotCallThisStub();
    StubRoutines::_atomic_cmpxchg_entry      = ShouldNotCallThisStub();
    StubRoutines::_atomic_cmpxchg_ptr_entry  = ShouldNotCallThisStub();
    StubRoutines::_atomic_cmpxchg_long_entry = ShouldNotCallThisStub();
    StubRoutines::_atomic_add_entry          = ShouldNotCallThisStub();
    StubRoutines::_atomic_add_ptr_entry      = ShouldNotCallThisStub();
    StubRoutines::_fence_entry               = ShouldNotCallThisStub();

    // amd64 does this here, sparc does it in generate_all()
    StubRoutines::_handler_for_unsafe_access_entry =
      ShouldNotCallThisStub();
  }
static address zero_null_code_stub() {
  address start = ShouldNotCallThisStub();
  return start;
}