src/cpu/x86/vm/stubGenerator_x86_64.cpp

changeset 3136
c565834fb592
parent 2978
d83ac25d0304
child 3156
f08d439fab8c
     1.1 --- a/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Fri Sep 09 13:47:11 2011 -0700
     1.2 +++ b/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Sat Sep 10 00:11:04 2011 -0700
     1.3 @@ -935,6 +935,8 @@
     1.4      __ pusha();                       // push registers
     1.5      Address next_pc(rsp, RegisterImpl::number_of_registers * BytesPerWord);
     1.6  
     1.7 +    // FIXME: this probably needs alignment logic
     1.8 +
     1.9      __ subptr(rsp, frame::arg_reg_save_area_bytes);
    1.10      BLOCK_COMMENT("call handle_unsafe_access");
    1.11      __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, handle_unsafe_access)));
    1.12 @@ -2934,7 +2936,6 @@
    1.13    // caller saved registers were assumed volatile in the compiler.
    1.14    address generate_throw_exception(const char* name,
    1.15                                     address runtime_entry,
    1.16 -                                   bool restore_saved_exception_pc,
    1.17                                     Register arg1 = noreg,
    1.18                                     Register arg2 = noreg) {
    1.19      // Information about frame layout at time of blocking runtime call.
    1.20 @@ -2962,12 +2963,6 @@
    1.21      // which has the ability to fetch the return PC out of
    1.22      // thread-local storage and also sets up last_Java_sp slightly
    1.23      // differently than the real call_VM
    1.24 -    if (restore_saved_exception_pc) {
    1.25 -      __ movptr(rax,
    1.26 -                Address(r15_thread,
    1.27 -                        in_bytes(JavaThread::saved_exception_pc_offset())));
    1.28 -      __ push(rax);
    1.29 -    }
    1.30  
    1.31      __ enter(); // required for proper stackwalking of RuntimeStub frame
    1.32  
    1.33 @@ -3068,7 +3063,7 @@
    1.34      StubRoutines::_throw_WrongMethodTypeException_entry =
    1.35        generate_throw_exception("WrongMethodTypeException throw_exception",
    1.36                                 CAST_FROM_FN_PTR(address, SharedRuntime::throw_WrongMethodTypeException),
    1.37 -                               false, rax, rcx);
    1.38 +                               rax, rcx);
    1.39    }
    1.40  
    1.41    void generate_all() {
    1.42 @@ -3081,43 +3076,25 @@
    1.43        generate_throw_exception("AbstractMethodError throw_exception",
    1.44                                 CAST_FROM_FN_PTR(address,
    1.45                                                  SharedRuntime::
    1.46 -                                                throw_AbstractMethodError),
    1.47 -                               false);
    1.48 +                                                throw_AbstractMethodError));
    1.49  
    1.50      StubRoutines::_throw_IncompatibleClassChangeError_entry =
    1.51        generate_throw_exception("IncompatibleClassChangeError throw_exception",
    1.52                                 CAST_FROM_FN_PTR(address,
    1.53                                                  SharedRuntime::
    1.54 -                                                throw_IncompatibleClassChangeError),
    1.55 -                               false);
    1.56 -
    1.57 -    StubRoutines::_throw_ArithmeticException_entry =
    1.58 -      generate_throw_exception("ArithmeticException throw_exception",
    1.59 -                               CAST_FROM_FN_PTR(address,
    1.60 -                                                SharedRuntime::
    1.61 -                                                throw_ArithmeticException),
    1.62 -                               true);
    1.63 -
    1.64 -    StubRoutines::_throw_NullPointerException_entry =
    1.65 -      generate_throw_exception("NullPointerException throw_exception",
    1.66 -                               CAST_FROM_FN_PTR(address,
    1.67 -                                                SharedRuntime::
    1.68 -                                                throw_NullPointerException),
    1.69 -                               true);
    1.70 +                                                throw_IncompatibleClassChangeError));
    1.71  
    1.72      StubRoutines::_throw_NullPointerException_at_call_entry =
    1.73        generate_throw_exception("NullPointerException at call throw_exception",
    1.74                                 CAST_FROM_FN_PTR(address,
    1.75                                                  SharedRuntime::
    1.76 -                                                throw_NullPointerException_at_call),
    1.77 -                               false);
    1.78 +                                                throw_NullPointerException_at_call));
    1.79  
    1.80      StubRoutines::_throw_StackOverflowError_entry =
    1.81        generate_throw_exception("StackOverflowError throw_exception",
    1.82                                 CAST_FROM_FN_PTR(address,
    1.83                                                  SharedRuntime::
    1.84 -                                                throw_StackOverflowError),
    1.85 -                               false);
    1.86 +                                                throw_StackOverflowError));
    1.87  
    1.88      // entry points that are platform specific
    1.89      StubRoutines::x86::_f2i_fixup = generate_f2i_fixup();

mercurial