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 };
|