Lines Matching refs:jit
10 // This file defines a MachineCodeEmitter object that is used by the JIT to
15 #define DEBUG_TYPE "jit"
16 #include "JIT.h"
70 // JIT lazy compilation code.
80 assert(false && "The JIT doesn't know how to handle a"
112 /// Instance of the JIT this ResolverState serves.
113 JIT *TheJIT;
116 JITResolverState(JIT *jit) : FunctionToLazyStubMap(this),
118 TheJIT(jit) {}
190 /// Instance of JIT corresponding to this Resolver.
191 JIT *TheJIT;
194 explicit JITResolver(JIT &jit, JITEmitter &je)
195 : state(&jit), nextGOTIndex(0), JE(je), TheJIT(&jit) {
196 LazyResolverFn = jit.getJITInfo().getLazyResolverFunction(JITCompilerFn);
277 /// JITEmitter - The JIT implementation of the MachineCodeEmitter, which is
286 // When reattempting to JIT a function after running out of space, we store
287 // the estimated size of the function we're trying to JIT here, so we can
324 /// DE - The dwarf emitter for the jit.
327 /// DR - The debug registerer for the jit.
362 /// Instance of the JIT
363 JIT *TheJIT;
366 JITEmitter(JIT &jit, JITMemoryManager *JMM, TargetMachine &TM)
367 : SizeEstimate(0), Resolver(jit, *this), MMI(0), CurFn(0),
368 EmittedFunctions(this), TheJIT(&jit) {
370 if (jit.getJITInfo().needsGOT()) {
372 DEBUG(dbgs() << "JIT is managing a GOT\n");
376 DE.reset(new JITDwarfEmitter(jit));
428 DEBUG(dbgs() << "JIT
532 // Call the lazy resolver function if we are JIT'ing lazily. Otherwise we
556 // address of the stub in the GlobalAddressMap for the JIT, not the address
561 DEBUG(dbgs() << "JIT: Lazy stub emitted at [" << Stub << "] for function '"
573 // If we are JIT'ing non-lazily but need to call a function that does not
574 // exist yet, add it to the JIT's work list so that we can fill in the
597 DEBUG(dbgs() << "JIT: Indirect symbol emitted at [" << IndirectSym
615 DEBUG(dbgs() << "JIT: Stub emitted at [" << Stub
625 DEBUG(dbgs() << "JIT: Adding GOT entry " << idx << " for addr ["
644 // JIT lock to be unlocked.
663 report_fatal_error("LLVM JIT requested to do lazy compilation of"
668 DEBUG(dbgs() << "JIT: Lazily resolving function '" << F->getName()
728 // If this is an external function pointer, we can force the JIT to
781 DEBUG(dbgs() << "JIT: Starting CodeGen of Function "
848 DEBUG(dbgs() << "JIT: Map \'" << MR.getExternalSymbol() << "\' to ["
881 DEBUG(dbgs() << "JIT: GOT was out of date for " << ResultPtr
898 DEBUG(dbgs() << "JIT: GOT was out of date for " << (void*)BufferBegin
930 DEBUG(dbgs() << "JIT: Finished CodeGen of [" << (void*)FnStart
943 dbgs() << "JIT: Disassembled code:\n";
947 dbgs() << "JIT: Binary code:\n";
953 dbgs() << "JIT: " << (long)(q - FnStart) << ": ";
1012 DEBUG(dbgs() << "JIT: Ran out of space for native code. Reattempting.\n");
1081 DEBUG(dbgs() << "JIT: Emitted constant pool at [" << ConstantPoolBase
1099 DEBUG(dbgs() << "JIT: CP" << i << " at [0x";
1145 "Cross JIT'ing?");
1164 assert(MJTI->getEntrySize(*TheJIT->getTargetData()) == 4&&"Cross JIT'ing?");
1254 llvm_unreachable("The JIT doesn't know how to handle a"
1263 JITCodeEmitter *JIT::createEmitter(JIT &jit, JITMemoryManager *JMM,
1265 return new JITEmitter(jit, JMM, tm);
1272 void *JIT::getPointerToFunctionOrStub(Function *F) {
1283 void JIT::updateFunctionStub(Function *F) {
1291 // Tell the target jit info to rewrite the stub at the specified address,
1301 void JIT::freeMachineCodeForFunction(Function *F) {