MCPcopy Index your code
hub / github.com/clojure/clojure / getAbstractTypeFromDescriptor

Method getAbstractTypeFromDescriptor

src/jvm/clojure/asm/Frame.java:274–337  ·  view source on GitHub ↗

Returns the abstract type corresponding to the given type descriptor. @param symbolTable the type table to use to lookup and store type Symbol. @param buffer a string ending with a type descriptor. @param offset the start offset of the type descriptor in buffer. @return the abstract type co

(
      final SymbolTable symbolTable, final String buffer, final int offset)

Source from the content-addressed store, hash-verified

272 * @return the abstract type corresponding to the given type descriptor.
273 */
274 private static int getAbstractTypeFromDescriptor(
275 final SymbolTable symbolTable, final String buffer, final int offset) {
276 String internalName;
277 switch (buffer.charAt(offset)) {
278 case 'V':
279 return 0;
280 case 'Z':
281 case 'C':
282 case 'B':
283 case 'S':
284 case 'I':
285 return INTEGER;
286 case 'F':
287 return FLOAT;
288 case 'J':
289 return LONG;
290 case 'D':
291 return DOUBLE;
292 case 'L':
293 internalName = buffer.substring(offset + 1, buffer.length() - 1);
294 return REFERENCE_KIND | symbolTable.addType(internalName);
295 case '[':
296 int elementDescriptorOffset = offset + 1;
297 while (buffer.charAt(elementDescriptorOffset) == '[') {
298 ++elementDescriptorOffset;
299 }
300 int typeValue;
301 switch (buffer.charAt(elementDescriptorOffset)) {
302 case 'Z':
303 typeValue = BOOLEAN;
304 break;
305 case 'C':
306 typeValue = CHAR;
307 break;
308 case 'B':
309 typeValue = BYTE;
310 break;
311 case 'S':
312 typeValue = SHORT;
313 break;
314 case 'I':
315 typeValue = INTEGER;
316 break;
317 case 'F':
318 typeValue = FLOAT;
319 break;
320 case 'J':
321 typeValue = LONG;
322 break;
323 case 'D':
324 typeValue = DOUBLE;
325 break;
326 case 'L':
327 internalName = buffer.substring(elementDescriptorOffset + 1, buffer.length() - 1);
328 typeValue = REFERENCE_KIND | symbolTable.addType(internalName);
329 break;
330 default:
331 throw new IllegalArgumentException();

Callers 3

pushMethod · 0.95

Calls 2

addTypeMethod · 0.80
lengthMethod · 0.65

Tested by

no test coverage detected