8152271: MemberNameTable doesn't purge stale entries

Intern MemberNames in table instead of allocating new entries

Reviewed-by: vlivanov, sspitsyn, dholmes
This commit is contained in:
Coleen Phillimore 2016-06-15 09:48:24 -04:00
parent 6ef961edbd
commit eba25b33b9
7 changed files with 55 additions and 19 deletions

View file

@ -3245,6 +3245,15 @@ void java_lang_invoke_MemberName::set_vmindex(oop mname, intptr_t index) {
mname->address_field_put(_vmindex_offset, (address) index);
}
bool java_lang_invoke_MemberName::equals(oop mn1, oop mn2) {
if (mn1 == mn2) {
return true;
}
return (vmtarget(mn1) == vmtarget(mn2) && flags(mn1) == flags(mn2) &&
vmindex(mn1) == vmindex(mn2) &&
clazz(mn1) == clazz(mn2));
}
oop java_lang_invoke_LambdaForm::vmentry(oop lform) {
assert(is_instance(lform), "wrong type");
return lform->obj_field(_vmentry_offset);