Change callstatus to short type to match 5.3.4 change

gccjit-ravi534
Dibyendu Majumdar 7 years ago
parent 6c099045b6
commit e1b71e6f0e

@ -88,9 +88,9 @@ typedef struct CallInfo {
} u;
ptrdiff_t extra;
short nresults; /* expected number of results from this function */
lu_byte callstatus;
unsigned short callstatus;
unsigned short stacklevel; /* Ravi extension - stack level, bottom level is 0 */
lu_byte jitstatus; /* Only valid if Lua function - if 1 means JITed - RAVI extension */
short stacklevel; /* Ravi extension - stack level, bottom level is 0 */
} CallInfo;

@ -834,8 +834,10 @@ class RaviCodeGenerator {
// emit code to obtain address of constant at locatiion B
llvm::Value *emit_gep_constant(RaviFunctionDef *def, int B);
#if 0
llvm::Value *emit_is_jit_call(RaviFunctionDef *def, llvm::Value *ci);
llvm::Value *emit_ci_is_Lua(RaviFunctionDef *def, llvm::Value *ci);
#endif
// obtain address of L->top
llvm::Value *emit_gep_L_top(RaviFunctionDef *def);

@ -624,7 +624,9 @@ bool ravi_setup_lua_types(ravi_gcc_context_t *ravi) {
// } u;
// ptrdiff_t extra;
// short nresults; /* expected number of results from this function */
// lu_byte callstatus;
// unsigned short callstatus;
// unsigned short stacklevel; /* Ravi extension - stack level, bottom level is 0 */
// lu_byte jitstatus; /* Only valid if Lua function - if 1 means JITed - RAVI extension */
//} CallInfo;
t->CallInfoT =
@ -670,8 +672,13 @@ bool ravi_setup_lua_types(ravi_gcc_context_t *ravi) {
fields[6] =
gcc_jit_context_new_field(ravi->context, NULL, t->C_shortT, "nresults");
fields[7] =
gcc_jit_context_new_field(ravi->context, NULL, t->lu_byteT, "callstatus");
gcc_jit_struct_set_fields(t->CallInfoT, NULL, 8, fields);
gcc_jit_context_new_field(ravi->context, NULL, t->C_shortT, "callstatus");
fields[8] =
gcc_jit_context_new_field(ravi->context, NULL, t->C_shortT, "stacklevel");
fields[9] =
gcc_jit_context_new_field(ravi->context, NULL, t->lu_byteT, "jitstatus");
gcc_jit_struct_set_fields(t->CallInfoT, NULL, 10, fields);
// typedef struct ravi_State ravi_State;
t->ravi_StateT =

@ -642,11 +642,12 @@ llvm::Value *RaviCodeGenerator::emit_gep_register_or_constant(
return rb;
}
// Test if ci->jistatus is true
#if 0
// Test if ci->jistatus is true, ci is of type CallInfo
llvm::Value *RaviCodeGenerator::emit_is_jit_call(RaviFunctionDef *def,
llvm::Value *ci) {
// Get pointer to ci->jitstatus
llvm::Value *ci_jitstatus_ptr = emit_gep(def, "ci_jit_status_ptr", ci, 0, 8);
llvm::Value *ci_jitstatus_ptr = emit_gep(def, "ci_jit_status_ptr", ci, 0, 9);
// Load ci->jitstatus
llvm::Instruction *ci_jitstatus = def->builder->CreateLoad(ci_jitstatus_ptr);
@ -672,11 +673,12 @@ llvm::Value *RaviCodeGenerator::emit_ci_is_Lua(RaviFunctionDef *def,
def->types->tbaa_CallInfo_callstatusT);
llvm::Value *isLua = def->builder->CreateAnd(
ci_callstatus, llvm::ConstantInt::get(def->types->lu_byteT, CIST_LUA),
ci_callstatus, llvm::ConstantInt::get(def->types->C_shortT, CIST_LUA),
"isLua");
return def->builder->CreateICmpNE(
isLua, llvm::ConstantInt::get(def->types->lu_byteT, 0));
isLua, llvm::ConstantInt::get(def->types->C_shortT, 0));
}
#endif
llvm::Value *RaviCodeGenerator::emit_load_ci(RaviFunctionDef *def) {
llvm::Value *L_ci = emit_gep(def, "L_ci", def->L, 0, 6);

@ -540,7 +540,9 @@ LuaLLVMTypes::LuaLLVMTypes(llvm::LLVMContext &context) : mdbuilder(context) {
// } u;
// ptrdiff_t extra;
// short nresults; /* expected number of results from this function */
// lu_byte callstatus;
// unsigned short callstatus;
// unsigned short stacklevel; /* Ravi extension - stack level, bottom level is 0 */
// lu_byte jitstatus; /* Only valid if Lua function - if 1 means JITed - RAVI extension */
//} CallInfo;
elements.clear();
@ -568,9 +570,9 @@ LuaLLVMTypes::LuaLLVMTypes(llvm::LLVMContext &context) : mdbuilder(context) {
*/
elements.push_back(C_ptrdiff_t); /* extra */
elements.push_back(llvm::Type::getInt16Ty(context)); /* nresults */
elements.push_back(lu_byteT); /* callstatus */
elements.push_back(lu_byteT); /* jitstatus RAVI extension*/
elements.push_back(C_shortT); /* stacklevel RAVI extension */
elements.push_back(C_shortT); /* callstatus */
elements.push_back(C_shortT); /* stacklevel RAVI extension */
elements.push_back(lu_byteT); /* jitstatus RAVI extension*/
CallInfoT->setBody(elements);
// typedef struct ravi_State ravi_State;
@ -1067,11 +1069,11 @@ LuaLLVMTypes::LuaLLVMTypes(llvm::LLVMContext &context) : mdbuilder(context) {
nodes.push_back(
std::pair<llvm::MDNode *, uint64_t>(tbaa_shortT, 40)); // nresults
nodes.push_back(
std::pair<llvm::MDNode *, uint64_t>(tbaa_charT, 42)); // callstatus
std::pair<llvm::MDNode *, uint64_t>(tbaa_shortT, 42)); // callstatus
nodes.push_back(
std::pair<llvm::MDNode *, uint64_t>(tbaa_charT, 43)); // jitstatus
std::pair<llvm::MDNode *, uint64_t>(tbaa_shortT, 44)); // stacklevel
nodes.push_back(
std::pair<llvm::MDNode *, uint64_t>(tbaa_shortT, 44)); // stacklevel
std::pair<llvm::MDNode *, uint64_t>(tbaa_charT, 46)); // jitstatus
tbaa_CallInfoT = mdbuilder.createTBAAStructTypeNode("CallInfo", nodes);
//! 7 = metadata !{metadata !"lua_State",
@ -1130,9 +1132,9 @@ LuaLLVMTypes::LuaLLVMTypes(llvm::LLVMContext &context) : mdbuilder(context) {
tbaa_CallInfo_savedpcT =
mdbuilder.createTBAAStructTagNode(tbaa_CallInfoT, tbaa_pointerT, 20);
tbaa_CallInfo_callstatusT =
mdbuilder.createTBAAStructTagNode(tbaa_CallInfoT, tbaa_charT, 42);
mdbuilder.createTBAAStructTagNode(tbaa_CallInfoT, tbaa_shortT, 42);
tbaa_CallInfo_jitstatusT =
mdbuilder.createTBAAStructTagNode(tbaa_CallInfoT, tbaa_charT, 43);
mdbuilder.createTBAAStructTagNode(tbaa_CallInfoT, tbaa_charT, 46);
//! 20 = metadata !{metadata !"Proto",
// metadata !3, i64 0, metadata !4, i64 4, metadata !4, i64 5,

Loading…
Cancel
Save