comparison src/share/vm/oops/constantPool.cpp @ 8104:f16e75e0cf11

8000797: NPG: is_pseudo_string_at() doesn't work Summary: Zero Symbol* for constant pool strings to indicate pseudo_strings (objects that aren't strings). Clean up JVM_CONSTANT_Object and unused flags. Reviewed-by: sspitsyn, jrose
author coleenp
date Fri, 22 Feb 2013 08:36:42 -0500
parents dc31f560d6e7
children 5fc51c1ecdeb c3c64a973559
comparison
equal deleted inserted replaced
8103:5ed317b25e23 8104:f16e75e0cf11
691 if (this_oop->is_pseudo_string_at(index)) { 691 if (this_oop->is_pseudo_string_at(index)) {
692 result_oop = this_oop->pseudo_string_at(index, cache_index); 692 result_oop = this_oop->pseudo_string_at(index, cache_index);
693 break; 693 break;
694 } 694 }
695 result_oop = string_at_impl(this_oop, index, cache_index, CHECK_NULL); 695 result_oop = string_at_impl(this_oop, index, cache_index, CHECK_NULL);
696 break;
697
698 case JVM_CONSTANT_Object:
699 result_oop = this_oop->object_at(index);
700 break; 696 break;
701 697
702 case JVM_CONSTANT_MethodHandleInError: 698 case JVM_CONSTANT_MethodHandleInError:
703 case JVM_CONSTANT_MethodTypeInError: 699 case JVM_CONSTANT_MethodTypeInError:
704 { 700 {
1822 EXCEPTION_MARK; 1818 EXCEPTION_MARK;
1823 assert(is_constantPool(), "must be constantPool"); 1819 assert(is_constantPool(), "must be constantPool");
1824 st->print_cr(internal_name()); 1820 st->print_cr(internal_name());
1825 if (flags() != 0) { 1821 if (flags() != 0) {
1826 st->print(" - flags: 0x%x", flags()); 1822 st->print(" - flags: 0x%x", flags());
1827 if (has_pseudo_string()) st->print(" has_pseudo_string");
1828 if (has_invokedynamic()) st->print(" has_invokedynamic");
1829 if (has_preresolution()) st->print(" has_preresolution"); 1823 if (has_preresolution()) st->print(" has_preresolution");
1830 if (on_stack()) st->print(" on_stack"); 1824 if (on_stack()) st->print(" on_stack");
1831 st->cr(); 1825 st->cr();
1832 } 1826 }
1833 if (pool_holder() != NULL) { 1827 if (pool_holder() != NULL) {
1867 case JVM_CONSTANT_InterfaceMethodref : 1861 case JVM_CONSTANT_InterfaceMethodref :
1868 st->print("klass_index=%d", uncached_klass_ref_index_at(index)); 1862 st->print("klass_index=%d", uncached_klass_ref_index_at(index));
1869 st->print(" name_and_type_index=%d", uncached_name_and_type_ref_index_at(index)); 1863 st->print(" name_and_type_index=%d", uncached_name_and_type_ref_index_at(index));
1870 break; 1864 break;
1871 case JVM_CONSTANT_String : 1865 case JVM_CONSTANT_String :
1872 unresolved_string_at(index)->print_value_on(st); 1866 if (is_pseudo_string_at(index)) {
1867 oop anObj = pseudo_string_at(index);
1868 anObj->print_value_on(st);
1869 st->print(" {0x%lx}", (address)anObj);
1870 } else {
1871 unresolved_string_at(index)->print_value_on(st);
1872 }
1873 break; 1873 break;
1874 case JVM_CONSTANT_Object : {
1875 oop anObj = object_at(index);
1876 anObj->print_value_on(st);
1877 st->print(" {0x%lx}", (address)anObj);
1878 } break;
1879 case JVM_CONSTANT_Integer : 1874 case JVM_CONSTANT_Integer :
1880 st->print("%d", int_at(index)); 1875 st->print("%d", int_at(index));
1881 break; 1876 break;
1882 case JVM_CONSTANT_Float : 1877 case JVM_CONSTANT_Float :
1883 st->print("%f", float_at(index)); 1878 st->print("%f", float_at(index));
1937 } 1932 }
1938 1933
1939 void ConstantPool::print_value_on(outputStream* st) const { 1934 void ConstantPool::print_value_on(outputStream* st) const {
1940 assert(is_constantPool(), "must be constantPool"); 1935 assert(is_constantPool(), "must be constantPool");
1941 st->print("constant pool [%d]", length()); 1936 st->print("constant pool [%d]", length());
1942 if (has_pseudo_string()) st->print("/pseudo_string");
1943 if (has_invokedynamic()) st->print("/invokedynamic");
1944 if (has_preresolution()) st->print("/preresolution"); 1937 if (has_preresolution()) st->print("/preresolution");
1945 if (operands() != NULL) st->print("/operands[%d]", operands()->length()); 1938 if (operands() != NULL) st->print("/operands[%d]", operands()->length());
1946 print_address_on(st); 1939 print_address_on(st);
1947 st->print(" for "); 1940 st->print(" for ");
1948 pool_holder()->print_value_on(st); 1941 pool_holder()->print_value_on(st);