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

*** 39,66 **** --- 39,52 ---- #endif #ifdef COMPILER2 #include "opto/runtime.hpp" #endif DeoptimizationBlob *SharedRuntime::_deopt_blob; #ifdef COMPILER2 UncommonTrapBlob *SharedRuntime::_uncommon_trap_blob; ExceptionBlob *OptoRuntime::_exception_blob; #endif // COMPILER2 + #define __ masm-> 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; #define __ masm-> class SimpleRuntimeFrame { public: // Most of the runtime stubs have this simple frame layout.
*** 2528,2563 **** --- 2514,2523 ---- 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", 512, 512); 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
*** 3044,3054 **** --- 3004,3014 ---- //------------------------------generate_handler_blob------ // // Generate a special Compile2Runtime blob that saves all registers, // and setup oopmap. // ! static SafepointBlob* generate_handler_blob(address call_ptr, bool cause_return) { ! SafepointBlob* SharedRuntime::generate_handler_blob(address call_ptr, bool cause_return) { assert(StubRoutines::forward_exception_entry() != NULL, "must be generated before"); ResourceMark rm; OopMapSet *oop_maps = new OopMapSet();
*** 3130,3140 **** --- 3090,3100 ---- // 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;
*** 3206,3247 **** --- 3166,3175 ---- // return the blob // frame_size_words or bytes?? return RuntimeStub::new_runtime_stub(name, &buffer, frame_complete, frame_size_in_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 } #ifdef COMPILER2 // This is here instead of runtime_x86_64.cpp because it uses SimpleRuntimeFrame // //------------------------------generate_exception_blob---------------------------

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