void FooBarTest::compileTestMethods() { int32_t rc = 0; TR::TypeDictionary types; //_bar = &FooBarTest::bar; BarIlInjector barIlInjector(&types, this); int32_t numberOfArguments = 1; TR::IlType *Int32 = types.PrimitiveType(TR::Int32); TR::IlType **argTypes = new TR::IlType*[numberOfArguments]; argTypes[0] = Int32; bool argIsArray[1] = { false }; TR::ResolvedMethod barCompilee(__FILE__, LINETOSTR(__LINE__), "bar", numberOfArguments, argTypes, Int32, 0, &barIlInjector); _barCompilee = &barCompilee; TR::IlGeneratorMethodDetails barDetails(&barCompilee); _bar = (BarMethodType *) (compileMethod(barDetails, warm, rc)); barCompilee.setEntryPoint((void *)_bar); FooIlInjector fooIlInjector(&types, this); TR::ResolvedMethod fooCompilee(__FILE__, LINETOSTR(__LINE__), "foo", numberOfArguments, argTypes, Int32, 0, &fooIlInjector); TR::IlGeneratorMethodDetails fooDetails(&fooCompilee); _foo = (FooMethodType *) (compileMethod(fooDetails, warm, rc)); }
void SimplifierFoldAndTest::compileTestMethods() { int32_t rc = 0; TR::TypeDictionary types; TR::IlType* Int32 = types.PrimitiveType(TR::Int32); TR::IlType* Int64 = types.PrimitiveType(TR::Int64); int32_t numberOfArguments = 1; TR::IlType** argTypes = new TR::IlType*[numberOfArguments] { Int32 }; SimplifierFoldAndIlInjector ilInjector(&types, this); TR::ResolvedMethod compilee(__FILE__, LINETOSTR(__LINE__), "simplifierFoldAnd", numberOfArguments, argTypes, Int64, 0, &ilInjector); TR::IlGeneratorMethodDetails details(&compilee); testCompiledMethod = reinterpret_cast<SimplifierFoldAndTest::TestCompiledMethodType>(compileMethod(details, warm, rc)); }
void Qux2Test::compileTestMethods() { int32_t rc = 0; TR::TypeDictionary types; Qux2IlInjector quxIlInjector(&types, this); int32_t numberOfArguments = 1; TR::IlType ** argTypes = new TR::IlType*[numberOfArguments]; TR::IlType *Int32 = types.PrimitiveType(TR::Int32); argTypes[0]= Int32; TR::ResolvedMethod qux2Compilee(__FILE__, LINETOSTR(__LINE__), "qux2", numberOfArguments, argTypes, Int32, 0, &quxIlInjector); TR::IlGeneratorMethodDetails qux2Details(&qux2Compilee); _qux2 = (testMethodType *) (compileMethod(qux2Details, warm, rc)); }
TEST_F(IlGenTest, Return3) { auto trees = parseString("(block (ireturn (iconst 3)))"); TR::TypeDictionary types; auto Int32 = types.PrimitiveType(TR::Int32); TR::IlType* argTypes[] = {Int32}; auto injector = Tril::TRLangBuilder{trees, &types}; TR::ResolvedMethod compilee{__FILE__, LINETOSTR(__LINE__), "Return3InIL", sizeof(argTypes)/sizeof(TR::IlType*), argTypes, Int32, 0, &injector}; TR::IlGeneratorMethodDetails methodDetails{&compilee}; int32_t rc = 0; auto entry_point = compileMethodFromDetails(NULL, methodDetails, warm, rc); ASSERT_EQ(0, rc) << "Compilation failed"; ASSERT_NOTNULL(entry_point) << "Entry point of compiled body cannot be null"; auto entry = reinterpret_cast<int32_t(*)(void)>(entry_point); ASSERT_EQ(3, entry()) << "Compiled body did not return expected value"; }