# HG changeset patch # User dholmes # Date 1375848379 25200 # Node ID 196aa14f9f29e0d89ee30f0802c1417ec78d54a7 # Parent ca0165daa6ec84d634ac7c5bcc8e44988575ddab# Parent c54a3122f9c84e3b853c3605ae530607b89ca52f Merge diff -r ca0165daa6ec -r 196aa14f9f29 src/cpu/zero/vm/entryFrame_zero.hpp --- a/src/cpu/zero/vm/entryFrame_zero.hpp Tue Aug 06 16:33:59 2013 -0700 +++ b/src/cpu/zero/vm/entryFrame_zero.hpp Tue Aug 06 21:06:19 2013 -0700 @@ -58,8 +58,8 @@ JavaCallWrapper* call_wrapper, TRAPS); public: - JavaCallWrapper *call_wrapper() const { - return (JavaCallWrapper *) value_of_word(call_wrapper_off); + JavaCallWrapper **call_wrapper() const { + return (JavaCallWrapper **) addr_of_word(call_wrapper_off); } public: diff -r ca0165daa6ec -r 196aa14f9f29 src/cpu/zero/vm/frame_zero.inline.hpp --- a/src/cpu/zero/vm/frame_zero.inline.hpp Tue Aug 06 16:33:59 2013 -0700 +++ b/src/cpu/zero/vm/frame_zero.inline.hpp Tue Aug 06 21:06:19 2013 -0700 @@ -141,7 +141,7 @@ return fp(); } -inline JavaCallWrapper* frame::entry_frame_call_wrapper() const { +inline JavaCallWrapper** frame::entry_frame_call_wrapper_addr() const { return zero_entryframe()->call_wrapper(); } diff -r ca0165daa6ec -r 196aa14f9f29 src/cpu/zero/vm/stubGenerator_zero.cpp --- a/src/cpu/zero/vm/stubGenerator_zero.cpp Tue Aug 06 16:33:59 2013 -0700 +++ b/src/cpu/zero/vm/stubGenerator_zero.cpp Tue Aug 06 21:06:19 2013 -0700 @@ -176,6 +176,19 @@ StubRoutines::_oop_arraycopy; } + static int SafeFetch32(int *adr, int errValue) { + int value = errValue; + value = *adr; + return value; + } + + static intptr_t SafeFetchN(intptr_t *adr, intptr_t errValue) { + intptr_t value = errValue; + value = *adr; + return value; + } + + void generate_initial() { // Generates all stubs and initializes the entry points @@ -225,6 +238,15 @@ // arraycopy stubs used by compilers generate_arraycopy_stubs(); + + // Safefetch stubs. + 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; } public: diff -r ca0165daa6ec -r 196aa14f9f29 src/os_cpu/linux_zero/vm/os_linux_zero.cpp --- a/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Tue Aug 06 16:33:59 2013 -0700 +++ b/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Tue Aug 06 21:06:19 2013 -0700 @@ -410,16 +410,6 @@ int SpinPause() { } - int SafeFetch32(int *adr, int errValue) { - int value = errValue; - value = *adr; - return value; - } - intptr_t SafeFetchN(intptr_t *adr, intptr_t errValue) { - intptr_t value = errValue; - value = *adr; - return value; - } void _Copy_conjoint_jshorts_atomic(jshort* from, jshort* to, size_t count) { if (from > to) {