add verbosity option

gccjit-ravi534
Dibyendu Majumdar 7 years ago
parent 828e39aa39
commit 74a2c8a16e

@ -435,6 +435,11 @@ class RaviJITState {
// Size level (LLVM PassManagerBuilder)
int size_level_;
// Verbosity
// 1 - Dump IR
// 2 - Dump assembly
int verbosity_;
// min code size for compilation
int min_code_size_;
@ -483,6 +488,10 @@ class RaviJITState {
void set_sizelevel(int value) {
if (value >= 0 && value <= 2) size_level_ = value;
}
int get_verbosity() const { return verbosity_; }
void set_verbosity(int value) {
if (value >= 0) verbosity_ = value;
}
int get_mincodesize() const { return min_code_size_; }
void set_mincodesize(int value) {
min_code_size_ = value > 0 ? value : min_code_size_;

@ -55,6 +55,10 @@ int raviV_getsizelevel(struct lua_State *L);
/* Set optimizer level */
void raviV_setoptlevel(struct lua_State *L, int optlevel);
int raviV_getoptlevel(struct lua_State *L);
/* Set verbosity */
void raviV_setverbosity(struct lua_State *L, int verbosity);
int raviV_getverbosity(struct lua_State *L);
/* Enable or disable JIT */
void raviV_setjitenabled(struct lua_State *L, int enabled);

@ -466,7 +466,8 @@ int luaD_precall (lua_State *L, StkId func, int nresults, int op_call) {
callhook(L, ci);
if (L == G(L)->mainthread && p->ravi_jit.jit_status == RAVI_JIT_NOT_COMPILED) {
/* not compiled */
ravi_compile_options_t options = { 0 };
ravi_compile_options_t options;
memset(&options, 0, sizeof options);
options.verification_level = 1;
raviV_compile(L, p, &options);
}

@ -241,6 +241,15 @@ int raviV_getgcstep(lua_State *L) {
return 0;
}
void raviV_setverbosity(lua_State *L, int value) {
(void)L;
(void)value;
}
int raviV_getverbosity(lua_State *L) {
(void)L;
return 0;
}
// Turn on/off the JIT compiler
void raviV_settraceenabled(lua_State *L, int value) {
(void)L;

@ -121,6 +121,7 @@ RaviJITState::RaviJITState()
enabled_(true),
opt_level_(2),
size_level_(0),
verbosity_(0),
min_code_size_(150),
min_exec_count_(50),
gc_step_(300),
@ -193,7 +194,15 @@ std::shared_ptr<llvm::Module> RaviJITState::optimizeModule(
using llvm::FunctionPassManager;
using llvm::PassManager;
#endif
bool dumpAsm = false;
#if defined(LLVM_ENABLE_DUMP)
if (get_verbosity() >= 1)
M->dump();
#endif
if (get_verbosity() >= 3)
TM->Options.PrintMachineCode = 1;
else
TM->Options.PrintMachineCode = 0;
// We use the PassManagerBuilder to setup optimization
// passes - the PassManagerBuilder allows easy configuration of
@ -256,7 +265,7 @@ std::shared_ptr<llvm::Module> RaviJITState::optimizeModule(
#endif
pmb.populateModulePassManager(*MPM);
for (int i = 0; dumpAsm && i < 1; i++) {
for (int i = 0; get_verbosity() == 2 && i < 1; i++) {
if (!TM) {
llvm::errs() << "unable to dump assembly\n";
break;
@ -274,7 +283,8 @@ std::shared_ptr<llvm::Module> RaviJITState::optimizeModule(
formatted_stream.flush();
#endif
}
if (dumpAsm && codestr.length() > 0) llvm::errs() << codestr << "\n";
if (get_verbosity() == 2 && codestr.length() > 0) llvm::errs() << codestr << "\n";
return M;
}
@ -820,6 +830,17 @@ int raviV_getsizelevel(lua_State *L) {
return G->ravi_state->jit->get_sizelevel();
}
void raviV_setverbosity(lua_State *L, int value) {
global_State *G = G(L);
if (!G->ravi_state) return;
G->ravi_state->jit->set_verbosity(value);
}
int raviV_getverbosity(lua_State *L) {
global_State *G = G(L);
if (!G->ravi_state) return 0;
return G->ravi_state->jit->get_verbosity();
}
void raviV_setgcstep(lua_State *L, int value) {
global_State *G = G(L);
if (!G->ravi_state) return;

@ -293,6 +293,15 @@ int raviV_getgcstep(lua_State *L) {
return 0;
}
void raviV_setverbosity(lua_State *L, int value) {
(void)L;
(void)value;
}
int raviV_getverbosity(lua_State *L) {
(void)L;
return 0;
}
// Turn on/off the JIT compiler
void raviV_settraceenabled(lua_State *L, int value) {
(void)L;

@ -138,6 +138,15 @@ int raviV_getsizelevel(struct lua_State *L) {
return 0;
}
void raviV_setverbosity(lua_State *L, int value) {
(void)L;
(void)value;
}
int raviV_getverbosity(lua_State *L) {
(void)L;
return 0;
}
void raviV_setgcstep(struct lua_State *L, int value) {
(void)L;
(void)value;

@ -219,6 +219,18 @@ static int ravi_traceenable(lua_State *L) {
lua_pushboolean(L, oldvalue != 0);
return 1;
}
// Set verbosity
static int ravi_verbosity(lua_State *L) {
int n = lua_gettop(L);
int oldvalue = raviV_getverbosity(L);
if (n == 1) {
int value = lua_tointeger(L, 1);
raviV_setverbosity(L, value);
}
lua_pushinteger(L, oldvalue);
return 1;
}
static int ravi_listcode(lua_State *L) {
luaL_argcheck(L, lua_isfunction(L, 1) && !lua_iscfunction(L, 1), 1,
@ -237,6 +249,7 @@ static const luaL_Reg ravilib[] = {{"iscompiled", ravi_is_compiled},
{"jit", ravi_jitenable},
{"optlevel", ravi_optlevel},
{"sizelevel", ravi_sizelevel},
{"verbosity", ravi_verbosity},
{"gcstep", ravi_gcstep},
{"tracehook", ravi_traceenable},
{"listcode", ravi_listcode},

Loading…
Cancel
Save