comparison src/share/vm/runtime/os.cpp @ 6266:1d7922586cf6

7023639: JSR 292 method handle invocation needs a fast path for compiled code 6984705: JSR 292 method handle creation should not go through JNI Summary: remove assembly code for JDK 7 chained method handles Reviewed-by: jrose, twisti, kvn, mhaupt Contributed-by: John Rose <john.r.rose@oracle.com>, Christian Thalinger <christian.thalinger@oracle.com>, Michael Haupt <michael.haupt@oracle.com>
author twisti
date Tue, 24 Jul 2012 10:51:00 -0700
parents d2a62e0f25eb
children 957c266d8bc5 da91efe96a93
comparison
equal deleted inserted replaced
6241:aba91a731143 6266:1d7922586cf6
820 if (b != NULL) { 820 if (b != NULL) {
821 if (b->is_buffer_blob()) { 821 if (b->is_buffer_blob()) {
822 // the interpreter is generated into a buffer blob 822 // the interpreter is generated into a buffer blob
823 InterpreterCodelet* i = Interpreter::codelet_containing(addr); 823 InterpreterCodelet* i = Interpreter::codelet_containing(addr);
824 if (i != NULL) { 824 if (i != NULL) {
825 st->print_cr(INTPTR_FORMAT " is an Interpreter codelet", addr); 825 st->print_cr(INTPTR_FORMAT " is at code_begin+%d in an Interpreter codelet", addr, (int)(addr - i->code_begin()));
826 i->print_on(st); 826 i->print_on(st);
827 return; 827 return;
828 } 828 }
829 if (Interpreter::contains(addr)) { 829 if (Interpreter::contains(addr)) {
830 st->print_cr(INTPTR_FORMAT " is pointing into interpreter code" 830 st->print_cr(INTPTR_FORMAT " is pointing into interpreter code"
831 " (not bytecode specific)", addr); 831 " (not bytecode specific)", addr);
832 return; 832 return;
833 } 833 }
834 // 834 //
835 if (AdapterHandlerLibrary::contains(b)) { 835 if (AdapterHandlerLibrary::contains(b)) {
836 st->print_cr(INTPTR_FORMAT " is an AdapterHandler", addr); 836 st->print_cr(INTPTR_FORMAT " is at code_begin+%d in an AdapterHandler", addr, (int)(addr - b->code_begin()));
837 AdapterHandlerLibrary::print_handler_on(st, b); 837 AdapterHandlerLibrary::print_handler_on(st, b);
838 } 838 }
839 // the stubroutines are generated into a buffer blob 839 // the stubroutines are generated into a buffer blob
840 StubCodeDesc* d = StubCodeDesc::desc_for(addr); 840 StubCodeDesc* d = StubCodeDesc::desc_for(addr);
841 if (d != NULL) { 841 if (d != NULL) {
842 st->print_cr(INTPTR_FORMAT " is at begin+%d in a stub", addr, (int)(addr - d->begin()));
842 d->print_on(st); 843 d->print_on(st);
843 if (verbose) st->cr(); 844 st->cr();
844 return; 845 return;
845 } 846 }
846 if (StubRoutines::contains(addr)) { 847 if (StubRoutines::contains(addr)) {
847 st->print_cr(INTPTR_FORMAT " is pointing to an (unnamed) " 848 st->print_cr(INTPTR_FORMAT " is pointing to an (unnamed) "
848 "stub routine", addr); 849 "stub routine", addr);
853 st->print_cr(INTPTR_FORMAT " is pointing into InlineCacheBuffer", addr); 854 st->print_cr(INTPTR_FORMAT " is pointing into InlineCacheBuffer", addr);
854 return; 855 return;
855 } 856 }
856 VtableStub* v = VtableStubs::stub_containing(addr); 857 VtableStub* v = VtableStubs::stub_containing(addr);
857 if (v != NULL) { 858 if (v != NULL) {
859 st->print_cr(INTPTR_FORMAT " is at entry_point+%d in a vtable stub", addr, (int)(addr - v->entry_point()));
858 v->print_on(st); 860 v->print_on(st);
861 st->cr();
859 return; 862 return;
860 } 863 }
861 } 864 }
862 if (verbose && b->is_nmethod()) { 865 nmethod* nm = b->as_nmethod_or_null();
866 if (nm != NULL) {
863 ResourceMark rm; 867 ResourceMark rm;
864 st->print("%#p: Compiled ", addr); 868 st->print(INTPTR_FORMAT " is at entry_point+%d in (nmethod*)" INTPTR_FORMAT,
865 ((nmethod*)b)->method()->print_value_on(st); 869 addr, (int)(addr - nm->entry_point()), nm);
866 st->print(" = (CodeBlob*)" INTPTR_FORMAT, b); 870 if (verbose) {
867 st->cr(); 871 st->print(" for ");
872 nm->method()->print_value_on(st);
873 }
874 nm->print_nmethod(verbose);
868 return; 875 return;
869 } 876 }
870 st->print(INTPTR_FORMAT " ", b); 877 st->print_cr(INTPTR_FORMAT " is at code_begin+%d in ", addr, (int)(addr - b->code_begin()));
871 if ( b->is_nmethod()) {
872 if (b->is_zombie()) {
873 st->print_cr("is zombie nmethod");
874 } else if (b->is_not_entrant()) {
875 st->print_cr("is non-entrant nmethod");
876 }
877 }
878 b->print_on(st); 878 b->print_on(st);
879 return; 879 return;
880 } 880 }
881 881
882 if (Universe::heap()->is_in(addr)) { 882 if (Universe::heap()->is_in(addr)) {