return Result;
}
+#if 0
class RecordingJITMemoryManager : public JITMemoryManager {
const OwningPtr<JITMemoryManager> Base;
public:
return Base->endExceptionTable(F, TableStart, TableEnd, FrameRegister);
}
};
+#endif
bool LoadAssemblyInto(Module *M, const char *assembly) {
SMDiagnostic Error;
virtual void SetUp() {
M = new Module("<main>", Context);
MP = new ExistingModuleProvider(M);
+#if 0
RJMM = new RecordingJITMemoryManager;
RJMM->setPoisonMemory(true);
+#endif
std::string Error;
TheJIT.reset(EngineBuilder(MP).setEngineKind(EngineKind::JIT)
+#if 0
.setJITMemoryManager(RJMM)
+#endif
.setErrorStr(&Error).create());
ASSERT_TRUE(TheJIT.get() != NULL) << Error;
}
LLVMContext Context;
Module *M; // Owned by MP.
ModuleProvider *MP; // Owned by ExecutionEngine.
+#if 0
RecordingJITMemoryManager *RJMM;
+#endif
OwningPtr<ExecutionEngine> TheJIT;
};
TheJIT->getPointerToFunction(func);
TheJIT->deleteModuleProvider(MP);
+#if 0
SmallPtrSet<const void*, 2> FunctionsDeallocated;
for (unsigned i = 0, e = RJMM->deallocateFunctionBodyCalls.size();
i != e; ++i) {
}
EXPECT_EQ(RJMM->startExceptionTableCalls.size(),
NumTablesDeallocated);
+#endif
}
// ARM and PPC still emit stubs for calls since the target may be too far away
// We should now allocate no more stubs, we have the code to foo
// and the existing stub for bar.
+#if 0
int stubsBefore = RJMM->stubsAllocated;
+#endif
Function *func = M->getFunction("main");
TheJIT->getPointerToFunction(func);
Function *bar = M->getFunction("bar");
TheJIT->getPointerToFunction(bar);
+#if 0
ASSERT_EQ(stubsBefore, RJMM->stubsAllocated);
+#endif
}
#endif // !ARM && !PPC
# Set up variables for building a unit test.
ifdef TESTNAME
-CXXFLAGS += -DGTEST_HAS_RTTI=0
-# gcc's TR1 <tuple> header depends on RTTI, so force googletest to use
-# its own tuple implementation. When we import googletest >=1.4.0, we
-# can drop this line.
-CXXFLAGS += -DGTEST_HAS_TR1_TUPLE=0
+REQUIRES_RTTI = 1
include $(LEVEL)/Makefile.common