Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/instanceKlass.cpp @ 10345:b7fa10a3a69a
8014288: perf regression in nashorn JDK-8008448.js test after 8008511 changes
Summary: The fix of perf regression is to use method_idnum() for direct indexing into NMT
Reviewed-by: twisti, kvn, coleenp, dholmes
Contributed-by: serguei.spitsyn@oracle.com
author | sspitsyn |
---|---|
date | Thu, 23 May 2013 23:04:33 -0700 |
parents | 6bd680e9ea35 |
children | 6c138b9851fb |
comparison
equal
deleted
inserted
replaced
10344:699d9df07e59 | 10345:b7fa10a3a69a |
---|---|
2752 return best; | 2752 return best; |
2753 } | 2753 } |
2754 return NULL; | 2754 return NULL; |
2755 } | 2755 } |
2756 | 2756 |
2757 void InstanceKlass::add_member_name(Handle mem_name) { | 2757 void InstanceKlass::add_member_name(int index, Handle mem_name) { |
2758 jweak mem_name_wref = JNIHandles::make_weak_global(mem_name); | 2758 jweak mem_name_wref = JNIHandles::make_weak_global(mem_name); |
2759 MutexLocker ml(MemberNameTable_lock); | 2759 MutexLocker ml(MemberNameTable_lock); |
2760 assert(0 <= index && index < idnum_allocated_count(), "index is out of bounds"); | |
2760 DEBUG_ONLY(No_Safepoint_Verifier nsv); | 2761 DEBUG_ONLY(No_Safepoint_Verifier nsv); |
2761 | 2762 |
2762 if (_member_names == NULL) { | 2763 if (_member_names == NULL) { |
2763 _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable(); | 2764 _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable(idnum_allocated_count()); |
2764 } | 2765 } |
2765 _member_names->add_member_name(mem_name_wref); | 2766 _member_names->add_member_name(index, mem_name_wref); |
2767 } | |
2768 | |
2769 oop InstanceKlass::get_member_name(int index) { | |
2770 MutexLocker ml(MemberNameTable_lock); | |
2771 assert(0 <= index && index < idnum_allocated_count(), "index is out of bounds"); | |
2772 DEBUG_ONLY(No_Safepoint_Verifier nsv); | |
2773 | |
2774 if (_member_names == NULL) { | |
2775 return NULL; | |
2776 } | |
2777 oop mem_name =_member_names->get_member_name(index); | |
2778 return mem_name; | |
2766 } | 2779 } |
2767 | 2780 |
2768 // ----------------------------------------------------------------------------------------------------- | 2781 // ----------------------------------------------------------------------------------------------------- |
2769 // Printing | 2782 // Printing |
2770 | 2783 |