< prev index next >

src/hotspot/cpu/x86/stubGenerator_x86_32.cpp

Print this page

        

*** 26,36 **** #include "asm/macroAssembler.hpp" #include "asm/macroAssembler.inline.hpp" #include "gc/shared/barrierSet.hpp" #include "gc/shared/barrierSetAssembler.hpp" #include "interpreter/interpreter.hpp" - #include "memory/universe.hpp" #include "nativeInst_x86.hpp" #include "oops/instanceOop.hpp" #include "oops/method.hpp" #include "oops/objArrayKlass.hpp" #include "oops/oop.inline.hpp" --- 26,35 ----
*** 601,663 **** __ ret(0); return start; } - //--------------------------------------------------------------------------------------------------- - address generate_vector_mask(const char *stub_name, int32_t mask) { - __ align(CodeEntryAlignment); - StubCodeMark mark(this, "StubRoutines", stub_name); - address start = __ pc(); - - for (int i = 0; i < 16; i++) { - __ emit_data(mask, relocInfo::none, 0); - } - - return start; - } - - address generate_vector_mask_long_double(const char *stub_name, int32_t maskhi, int32_t masklo) { - __ align(CodeEntryAlignment); - StubCodeMark mark(this, "StubRoutines", stub_name); - address start = __ pc(); - - for (int i = 0; i < 8; i++) { - __ emit_data(masklo, relocInfo::none, 0); - __ emit_data(maskhi, relocInfo::none, 0); - } - - return start; - } - - //---------------------------------------------------------------------------------------------------- - - address generate_vector_byte_perm_mask(const char *stub_name) { - __ align(CodeEntryAlignment); - StubCodeMark mark(this, "StubRoutines", stub_name); - address start = __ pc(); - - __ emit_data(0x00000001, relocInfo::none, 0); - __ emit_data(0x00000000, relocInfo::none, 0); - __ emit_data(0x00000003, relocInfo::none, 0); - __ emit_data(0x00000000, relocInfo::none, 0); - __ emit_data(0x00000005, relocInfo::none, 0); - __ emit_data(0x00000000, relocInfo::none, 0); - __ emit_data(0x00000007, relocInfo::none, 0); - __ emit_data(0x00000000, relocInfo::none, 0); - __ emit_data(0x00000000, relocInfo::none, 0); - __ emit_data(0x00000000, relocInfo::none, 0); - __ emit_data(0x00000002, relocInfo::none, 0); - __ emit_data(0x00000000, relocInfo::none, 0); - __ emit_data(0x00000004, relocInfo::none, 0); - __ emit_data(0x00000000, relocInfo::none, 0); - __ emit_data(0x00000006, relocInfo::none, 0); - __ emit_data(0x00000000, relocInfo::none, 0); - - return start; - } //---------------------------------------------------------------------------------------------------- // Non-destructive plausibility checks for oops address generate_verify_oop() { --- 600,610 ----
*** 3019,3041 **** const XMMRegister msg3 = xmm6; const XMMRegister shuf_mask = xmm7; __ enter(); __ subptr(rsp, 8 * wordSize); ! handleSOERegisters(true /*saving*/); ! __ movptr(buf, buf_param); __ movptr(state, state_param); if (multi_block) { __ movptr(ofs, ofs_param); __ movptr(limit, limit_param); } __ fast_sha1(abcd, e0, e1, msg0, msg1, msg2, msg3, shuf_mask, buf, state, ofs, limit, rsp, multi_block); ! handleSOERegisters(false /*restoring*/); __ addptr(rsp, 8 * wordSize); __ leave(); __ ret(0); return start; } --- 2966,2991 ---- const XMMRegister msg3 = xmm6; const XMMRegister shuf_mask = xmm7; __ enter(); __ subptr(rsp, 8 * wordSize); ! if (multi_block) { ! __ push(limit); ! } __ movptr(buf, buf_param); __ movptr(state, state_param); if (multi_block) { __ movptr(ofs, ofs_param); __ movptr(limit, limit_param); } __ fast_sha1(abcd, e0, e1, msg0, msg1, msg2, msg3, shuf_mask, buf, state, ofs, limit, rsp, multi_block); ! if (multi_block) { ! __ pop(limit); ! } __ addptr(rsp, 8 * wordSize); __ leave(); __ ret(0); return start; }
*** 3874,3891 **** StubRoutines::_throw_NullPointerException_at_call_entry= generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException_at_call)); //------------------------------------------------------------------------------------------------------------------------ // entry points that are platform specific - StubRoutines::x86::_vector_float_sign_mask = generate_vector_mask("vector_float_sign_mask", 0x7FFFFFFF); - StubRoutines::x86::_vector_float_sign_flip = generate_vector_mask("vector_float_sign_flip", 0x80000000); - StubRoutines::x86::_vector_double_sign_mask = generate_vector_mask_long_double("vector_double_sign_mask", 0x7FFFFFFF, 0xFFFFFFFF); - StubRoutines::x86::_vector_double_sign_flip = generate_vector_mask_long_double("vector_double_sign_flip", 0x80000000, 0x00000000); - StubRoutines::x86::_vector_short_to_byte_mask = generate_vector_mask("vector_short_to_byte_mask", 0x00ff00ff); - StubRoutines::x86::_vector_byte_perm_mask = generate_vector_byte_perm_mask("vector_byte_perm_mask"); - StubRoutines::x86::_vector_long_sign_mask = generate_vector_mask_long_double("vector_long_sign_mask", 0x80000000, 0x00000000); - // support for verify_oop (must happen after universe_init) StubRoutines::_verify_oop_subroutine_entry = generate_verify_oop(); // arraycopy stubs used by compilers generate_arraycopy_stubs(); --- 3824,3833 ----
< prev index next >