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

Method compile

src/jvm/clojure/lang/Compiler.java:8327–8493  ·  view source on GitHub ↗
(Reader rdr, String sourcePath, String sourceName)

Source from the content-addressed store, hash-verified

8325}
8326
8327public 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))

Callers 7

compileMethod · 0.95
CompilerClass · 0.45
parseMethod · 0.45
buildMethod · 0.45
EdnReaderClass · 0.45
LispReaderClass · 0.45
invokeMethod · 0.45

Calls 15

runtimeExceptionMethod · 0.95
pushThreadBindingsMethod · 0.95
mapUniqueKeysMethod · 0.95
getLineNumberMethod · 0.95
getColumnNumberMethod · 0.95
getObjectTypeMethod · 0.95
classWriterMethod · 0.95
visitMethod · 0.95
getMethodMethod · 0.95
readerOptsMethod · 0.95
readMethod · 0.95
compile1Method · 0.95

Tested by

no test coverage detected