(Reader rdr, String sourcePath, String sourceName)
| 8325 | } |
| 8326 | |
| 8327 | public static Object compile(Reader rdr, String sourcePath, String sourceName) throws IOException{ |
| 8328 | if(COMPILE_PATH.deref() == null) |
| 8329 | throw Util.runtimeException("*compile-path* not set"); |
| 8330 | |
| 8331 | Object EOF = new Object(); |
| 8332 | Object ret = null; |
| 8333 | LineNumberingPushbackReader pushbackReader = |
| 8334 | (rdr instanceof LineNumberingPushbackReader) ? (LineNumberingPushbackReader) rdr : |
| 8335 | new LineNumberingPushbackReader(rdr); |
| 8336 | Var.pushThreadBindings( |
| 8337 | RT.mapUniqueKeys(SOURCE_PATH, sourcePath, |
| 8338 | SOURCE, sourceName, |
| 8339 | METHOD, null, |
| 8340 | LOCAL_ENV, null, |
| 8341 | LOOP_LOCALS, null, |
| 8342 | NEXT_LOCAL_NUM, 0, |
| 8343 | RT.READEVAL, RT.T, |
| 8344 | RT.CURRENT_NS, RT.CURRENT_NS.deref(), |
| 8345 | LINE_BEFORE, pushbackReader.getLineNumber(), |
| 8346 | COLUMN_BEFORE, pushbackReader.getColumnNumber(), |
| 8347 | LINE_AFTER, pushbackReader.getLineNumber(), |
| 8348 | COLUMN_AFTER, pushbackReader.getColumnNumber(), |
| 8349 | CONSTANTS, PersistentVector.EMPTY, |
| 8350 | CONSTANT_IDS, new IdentityHashMap(), |
| 8351 | KEYWORD_CALLSITES, null, |
| 8352 | PROTOCOL_CALLSITES, null, |
| 8353 | //VAR_CALLSITES, null, |
| 8354 | KEYWORDS, PersistentHashMap.EMPTY, |
| 8355 | VARS, PersistentHashMap.EMPTY |
| 8356 | ,RT.UNCHECKED_MATH, RT.UNCHECKED_MATH.deref() |
| 8357 | ,RT.WARN_ON_REFLECTION, RT.WARN_ON_REFLECTION.deref() |
| 8358 | ,RT.DATA_READERS, RT.DATA_READERS.deref() |
| 8359 | // ,LOADER, RT.makeClassLoader() |
| 8360 | )); |
| 8361 | |
| 8362 | try |
| 8363 | { |
| 8364 | //generate loader class |
| 8365 | ObjExpr objx = new ObjExpr(null); |
| 8366 | objx.internalName = sourcePath.replace(File.separator, "/").substring(0, sourcePath.lastIndexOf('.')) |
| 8367 | + RT.LOADER_SUFFIX; |
| 8368 | |
| 8369 | objx.objtype = Type.getObjectType(objx.internalName); |
| 8370 | ClassWriter cw = classWriter(); |
| 8371 | ClassVisitor cv = cw; |
| 8372 | cv.visit(V1_8, ACC_PUBLIC + ACC_SUPER, objx.internalName, null, "java/lang/Object", null); |
| 8373 | |
| 8374 | //static load method |
| 8375 | GeneratorAdapter gen = new GeneratorAdapter(ACC_PUBLIC + ACC_STATIC, |
| 8376 | Method.getMethod("void load ()"), |
| 8377 | null, |
| 8378 | null, |
| 8379 | cv); |
| 8380 | gen.visitCode(); |
| 8381 | |
| 8382 | Object readerOpts = readerOpts(sourceName); |
| 8383 | for(Object r = LispReader.read(pushbackReader, false, EOF, false, readerOpts); r != EOF; |
| 8384 | r = LispReader.read(pushbackReader, false, EOF, false, readerOpts)) |
no test coverage detected