src/share/classes/com/sun/tools/classfile/StackMapTable_attribute.java

changeset 283
cd0630109de5
parent 229
03bcd66bd8e7
child 554
9d9f26857129
equal deleted inserted replaced
282:fc634a593812 283:cd0630109de5
105 105
106 public int length() { 106 public int length() {
107 return 1; 107 return 1;
108 } 108 }
109 109
110 public abstract int getOffsetDelta();
111
110 public abstract <R,D> R accept(Visitor<R,D> visitor, D data); 112 public abstract <R,D> R accept(Visitor<R,D> visitor, D data);
111 113
112 public final int frame_type; 114 public final int frame_type;
113 115
114 public static interface Visitor<R,P> { 116 public static interface Visitor<R,P> {
128 } 130 }
129 131
130 public <R, D> R accept(Visitor<R, D> visitor, D data) { 132 public <R, D> R accept(Visitor<R, D> visitor, D data) {
131 return visitor.visit_same_frame(this, data); 133 return visitor.visit_same_frame(this, data);
132 } 134 }
135
136 public int getOffsetDelta() {
137 return frame_type;
138 }
133 } 139 }
134 140
135 public static class same_locals_1_stack_item_frame extends stack_map_frame { 141 public static class same_locals_1_stack_item_frame extends stack_map_frame {
136 same_locals_1_stack_item_frame(int frame_type, ClassReader cr) 142 same_locals_1_stack_item_frame(int frame_type, ClassReader cr)
137 throws IOException, InvalidStackMap { 143 throws IOException, InvalidStackMap {
147 153
148 public <R, D> R accept(Visitor<R, D> visitor, D data) { 154 public <R, D> R accept(Visitor<R, D> visitor, D data) {
149 return visitor.visit_same_locals_1_stack_item_frame(this, data); 155 return visitor.visit_same_locals_1_stack_item_frame(this, data);
150 } 156 }
151 157
158 public int getOffsetDelta() {
159 return frame_type - 64;
160 }
161
152 public final verification_type_info[] stack; 162 public final verification_type_info[] stack;
153 } 163 }
154 164
155 public static class same_locals_1_stack_item_frame_extended extends stack_map_frame { 165 public static class same_locals_1_stack_item_frame_extended extends stack_map_frame {
156 same_locals_1_stack_item_frame_extended(int frame_type, ClassReader cr) 166 same_locals_1_stack_item_frame_extended(int frame_type, ClassReader cr)
168 178
169 public <R, D> R accept(Visitor<R, D> visitor, D data) { 179 public <R, D> R accept(Visitor<R, D> visitor, D data) {
170 return visitor.visit_same_locals_1_stack_item_frame_extended(this, data); 180 return visitor.visit_same_locals_1_stack_item_frame_extended(this, data);
171 } 181 }
172 182
183 public int getOffsetDelta() {
184 return offset_delta;
185 }
186
173 public final int offset_delta; 187 public final int offset_delta;
174 public final verification_type_info[] stack; 188 public final verification_type_info[] stack;
175 } 189 }
176 190
177 public static class chop_frame extends stack_map_frame { 191 public static class chop_frame extends stack_map_frame {
187 201
188 public <R, D> R accept(Visitor<R, D> visitor, D data) { 202 public <R, D> R accept(Visitor<R, D> visitor, D data) {
189 return visitor.visit_chop_frame(this, data); 203 return visitor.visit_chop_frame(this, data);
190 } 204 }
191 205
206 public int getOffsetDelta() {
207 return offset_delta;
208 }
209
192 public final int offset_delta; 210 public final int offset_delta;
193 } 211 }
194 212
195 public static class same_frame_extended extends stack_map_frame { 213 public static class same_frame_extended extends stack_map_frame {
196 same_frame_extended(int frame_type, ClassReader cr) throws IOException { 214 same_frame_extended(int frame_type, ClassReader cr) throws IOException {
203 return super.length() + 2; 221 return super.length() + 2;
204 } 222 }
205 223
206 public <R, D> R accept(Visitor<R, D> visitor, D data) { 224 public <R, D> R accept(Visitor<R, D> visitor, D data) {
207 return visitor.visit_same_frame_extended(this, data); 225 return visitor.visit_same_frame_extended(this, data);
226 }
227
228 public int getOffsetDelta() {
229 return offset_delta;
208 } 230 }
209 231
210 public final int offset_delta; 232 public final int offset_delta;
211 } 233 }
212 234
228 return n; 250 return n;
229 } 251 }
230 252
231 public <R, D> R accept(Visitor<R, D> visitor, D data) { 253 public <R, D> R accept(Visitor<R, D> visitor, D data) {
232 return visitor.visit_append_frame(this, data); 254 return visitor.visit_append_frame(this, data);
255 }
256
257 public int getOffsetDelta() {
258 return offset_delta;
233 } 259 }
234 260
235 public final int offset_delta; 261 public final int offset_delta;
236 public final verification_type_info[] locals; 262 public final verification_type_info[] locals;
237 } 263 }
262 return n; 288 return n;
263 } 289 }
264 290
265 public <R, D> R accept(Visitor<R, D> visitor, D data) { 291 public <R, D> R accept(Visitor<R, D> visitor, D data) {
266 return visitor.visit_full_frame(this, data); 292 return visitor.visit_full_frame(this, data);
293 }
294
295 public int getOffsetDelta() {
296 return offset_delta;
267 } 297 }
268 298
269 public final int offset_delta; 299 public final int offset_delta;
270 public final int number_of_locals; 300 public final int number_of_locals;
271 public final verification_type_info[] locals; 301 public final verification_type_info[] locals;
306 default: 336 default:
307 throw new InvalidStackMap("unrecognized verification_type_info tag"); 337 throw new InvalidStackMap("unrecognized verification_type_info tag");
308 } 338 }
309 } 339 }
310 340
311 verification_type_info(int tag) { 341 protected verification_type_info(int tag) {
312 this.tag = tag; 342 this.tag = tag;
313 } 343 }
314 344
315 public int length() { 345 public int length() {
316 return 1; 346 return 1;

mercurial