src/cpu/x86/vm/sharedRuntime_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Thu Jun  2 14:57:11 2011
--- new/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Thu Jun  2 14:57:11 2011

*** 40,62 **** --- 40,50 ---- #ifdef COMPILER2 #include "opto/runtime.hpp" #endif #define __ masm-> #ifdef COMPILER2 UncommonTrapBlob *SharedRuntime::_uncommon_trap_blob; #endif // COMPILER2 DeoptimizationBlob *SharedRuntime::_deopt_blob; SafepointBlob *SharedRuntime::_polling_page_safepoint_handler_blob; SafepointBlob *SharedRuntime::_polling_page_return_handler_blob; RuntimeStub* SharedRuntime::_wrong_method_blob; RuntimeStub* SharedRuntime::_ic_miss_blob; RuntimeStub* SharedRuntime::_resolve_opt_virtual_call_blob; RuntimeStub* SharedRuntime::_resolve_virtual_call_blob; RuntimeStub* SharedRuntime::_resolve_static_call_blob; const int StackAlignmentInSlots = StackAlignmentInBytes / VMRegImpl::stack_slot_size; class RegisterSaver { enum { FPU_regs_live = 8 /*for the FPU stack*/+8/*eight more for XMM registers*/ }; // Capture info about frame layout
*** 2251,2286 **** --- 2239,2249 ---- uint SharedRuntime::out_preserve_stack_slots() { return 0; } //----------------------------generate_ricochet_blob--------------------------- void SharedRuntime::generate_ricochet_blob() { if (!EnableInvokeDynamic) return; // leave it as a null // allocate space for the code ResourceMark rm; // setup code generation tools CodeBuffer buffer("ricochet_blob", 256, 256); MacroAssembler* masm = new MacroAssembler(&buffer); int frame_size_in_words = -1, bounce_offset = -1, exception_offset = -1; MethodHandles::RicochetFrame::generate_ricochet_blob(masm, &frame_size_in_words, &bounce_offset, &exception_offset); // ------------- // make sure all code is generated masm->flush(); // failed to generate? if (frame_size_in_words < 0 || bounce_offset < 0 || exception_offset < 0) { assert(false, "bad ricochet blob"); return; } _ricochet_blob = RicochetBlob::create(&buffer, bounce_offset, exception_offset, frame_size_in_words); } //------------------------------generate_deopt_blob---------------------------- void SharedRuntime::generate_deopt_blob() { // allocate space for the code ResourceMark rm; // setup code generation tools
*** 2814,2824 **** --- 2777,2787 ---- // // Generate a special Compile2Runtime blob that saves all registers, // setup oopmap, and calls safepoint code to stop the compiled code for // a safepoint. // ! static SafepointBlob* generate_handler_blob(address call_ptr, bool cause_return) { ! SafepointBlob* SharedRuntime::generate_handler_blob(address call_ptr, bool cause_return) { // Account for thread arg in our frame const int additional_words = 1; int frame_size_in_words;
*** 2911,2921 **** --- 2874,2884 ---- // Generate a stub that calls into vm to find out the proper destination // of a java call. All the argument registers are live at this point // but since this is generic code we don't know what they are and the caller // must do any gc of the args. // ! static RuntimeStub* generate_resolve_blob(address destination, const char* name) { ! RuntimeStub* SharedRuntime::generate_resolve_blob(address destination, const char* name) { assert (StubRoutines::forward_exception_entry() != NULL, "must be generated before"); // allocate space for the code ResourceMark rm;
*** 2992,3030 **** --- 2955,2960 ---- masm->flush(); // return the blob // frame_size_words or bytes?? return RuntimeStub::new_runtime_stub(name, &buffer, frame_complete, frame_size_words, oop_maps, true); } void SharedRuntime::generate_stubs() { _wrong_method_blob = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::handle_wrong_method), "wrong_method_stub"); _ic_miss_blob = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::handle_wrong_method_ic_miss), "ic_miss_stub"); _resolve_opt_virtual_call_blob = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::resolve_opt_virtual_call_C), "resolve_opt_virtual_call"); _resolve_virtual_call_blob = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::resolve_virtual_call_C), "resolve_virtual_call"); _resolve_static_call_blob = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::resolve_static_call_C), "resolve_static_call"); _polling_page_safepoint_handler_blob = generate_handler_blob(CAST_FROM_FN_PTR(address, SafepointSynchronize::handle_polling_page_exception), false); _polling_page_return_handler_blob = generate_handler_blob(CAST_FROM_FN_PTR(address, SafepointSynchronize::handle_polling_page_exception), true); generate_ricochet_blob(); generate_deopt_blob(); #ifdef COMPILER2 generate_uncommon_trap_blob(); #endif // COMPILER2 }

src/cpu/x86/vm/sharedRuntime_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File