示例#1
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                = generate_forward_exception();
    StubRoutines::_call_stub_entry                        = generate_call_stub(StubRoutines::_call_stub_return_address);
    StubRoutines::_catch_exception_entry                  = generate_catch_exception();

    StubRoutines::_atomic_xchg_ptr_entry                  = generate_atomic_xchg_ptr();
    StubRoutines::_atomic_cmpxchg_ptr_entry               = generate_atomic_cmpxchg_ptr();
    StubRoutines::_atomic_cmpxchg_long_entry              = StubRoutines::_atomic_cmpxchg_ptr_entry;
    StubRoutines::_atomic_add_ptr_entry                   = generate_atomic_add_ptr();

    StubRoutines::_atomic_xchg_entry                      = generate_atomic_xchg();
    StubRoutines::_atomic_cmpxchg_entry                   = generate_atomic_cmpxchg();
    StubRoutines::_atomic_add_entry                       = generate_atomic_add();
    StubRoutines::_fence_entry                            = generate_fence();

    StubRoutines::ia64::_acquire_entry                    = generate_acquire();

    StubRoutines::ia64::_partial_subtype_check            = generate_partial_subtype_check();
    StubRoutines::ia64::_flush_register_stack_entry       = generate_flush_register_stack();
    StubRoutines::ia64::_get_backing_store_pointer        = generate_get_backing_store_pointer();

    StubRoutines::ia64::_ldffill_entry                    = generate_ldffill();
  }
  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                 = generate_forward_exception();    

    StubRoutines::_call_stub_entry                         = generate_call_stub(StubRoutines::_call_stub_return_address);
    // is referenced by megamorphic call    
    StubRoutines::_catch_exception_entry                   = generate_catch_exception();    

    // These are currently used by Solaris/Intel
    StubRoutines::_atomic_xchg_entry                       = generate_atomic_xchg();

    // platform dependent
    StubRoutines::i486::_handler_for_unsafe_access_entry    = generate_handler_for_unsafe_access();
    StubRoutines::i486::_get_previous_fp_entry              = generate_get_previous_fp();

    StubRoutines::_d2i_wrapper                              = generate_d2i_wrapper( CAST_FROM_FN_PTR(address, SharedRuntime::d2i) );
    StubRoutines::_d2l_wrapper                              = generate_d2i_wrapper( CAST_FROM_FN_PTR(address, SharedRuntime::d2l) );
    create_control_words();
  }