< prev index next >

src/hotspot/share/oops/fieldInfo.cpp

Print this page

 98   assert(jfc == java_fields, "Must be");
 99   assert(ifc == injected_fields, "Must be");
100   for (int i = 0; i < jfc + ifc; i++) {
101     FieldInfo fi;
102     r.read_field_info(fi);
103     FieldInfo* fi_ref = fields->adr_at(i);
104     assert(fi_ref->name_index() == fi.name_index(), "Must be");
105     assert(fi_ref->signature_index() == fi.signature_index(), "Must be");
106     assert(fi_ref->offset() == fi.offset(), "Must be");
107     assert(fi_ref->access_flags().as_field_flags() == fi.access_flags().as_field_flags(), "Must be");
108     assert(fi_ref->field_flags().as_uint() == fi.field_flags().as_uint(), " Must be");
109     if(fi_ref->field_flags().is_initialized()) {
110       assert(fi_ref->initializer_index() == fi.initializer_index(), "Must be");
111     }
112     if (fi_ref->field_flags().is_generic()) {
113       assert(fi_ref->generic_signature_index() == fi.generic_signature_index(), "Must be");
114     }
115     if (fi_ref->field_flags().is_contended()) {
116       assert(fi_ref->contended_group() == fi.contended_group(), "Must be");
117     }






118   }
119 #endif // ASSERT
120 
121   return fis;
122 }
123 
124 int FieldInfoStream::compare_name_and_sig(const Symbol* n1, const Symbol* s1, const Symbol* n2, const Symbol* s2) {
125   int cmp = n1->fast_compare(n2);
126   return cmp != 0 ? cmp : s1->fast_compare(s2);
127 }
128 
129 
130 // We use both name and signature during the comparison; while JLS require unique
131 // names for fields, JVMS requires only unique name + signature combination.
132 struct field_pos {
133   Symbol* _name;
134   Symbol* _signature;
135   int _index;
136   int _position;
137 };

 98   assert(jfc == java_fields, "Must be");
 99   assert(ifc == injected_fields, "Must be");
100   for (int i = 0; i < jfc + ifc; i++) {
101     FieldInfo fi;
102     r.read_field_info(fi);
103     FieldInfo* fi_ref = fields->adr_at(i);
104     assert(fi_ref->name_index() == fi.name_index(), "Must be");
105     assert(fi_ref->signature_index() == fi.signature_index(), "Must be");
106     assert(fi_ref->offset() == fi.offset(), "Must be");
107     assert(fi_ref->access_flags().as_field_flags() == fi.access_flags().as_field_flags(), "Must be");
108     assert(fi_ref->field_flags().as_uint() == fi.field_flags().as_uint(), " Must be");
109     if(fi_ref->field_flags().is_initialized()) {
110       assert(fi_ref->initializer_index() == fi.initializer_index(), "Must be");
111     }
112     if (fi_ref->field_flags().is_generic()) {
113       assert(fi_ref->generic_signature_index() == fi.generic_signature_index(), "Must be");
114     }
115     if (fi_ref->field_flags().is_contended()) {
116       assert(fi_ref->contended_group() == fi.contended_group(), "Must be");
117     }
118     if (fi_ref->field_flags().is_flat()) {
119       assert(fi_ref->layout_kind() == fi.layout_kind(), "Must be");
120     }
121     if (fi_ref->field_flags().has_null_marker()) {
122       assert(fi_ref->null_marker_offset() == fi.null_marker_offset(), "Must be");
123     }
124   }
125 #endif // ASSERT
126 
127   return fis;
128 }
129 
130 int FieldInfoStream::compare_name_and_sig(const Symbol* n1, const Symbol* s1, const Symbol* n2, const Symbol* s2) {
131   int cmp = n1->fast_compare(n2);
132   return cmp != 0 ? cmp : s1->fast_compare(s2);
133 }
134 
135 
136 // We use both name and signature during the comparison; while JLS require unique
137 // names for fields, JVMS requires only unique name + signature combination.
138 struct field_pos {
139   Symbol* _name;
140   Symbol* _signature;
141   int _index;
142   int _position;
143 };
< prev index next >