issue #15 updated savedpc

pull/81/head
Dibyendu Majumdar 9 years ago
parent c1a157ce4a
commit b4b54485d4

@ -311,10 +311,12 @@ void RaviCodeGenerator::emit_BITWISE_SHIFT_OP(RaviFunctionDef *def, OpCode op,
switch (op) {
case OP_SHL:
emit_update_savedpc(def, pc);
case OP_RAVI_SHL_II:
CreateCall4(def->builder, def->raviV_op_shlF, def->L, ra, rb, rc);
break;
case OP_SHR:
emit_update_savedpc(def, pc);
case OP_RAVI_SHR_II:
CreateCall4(def->builder, def->raviV_op_shrF, def->L, ra, rb, rc);
break;

@ -213,6 +213,7 @@ void RaviCodeGenerator::emit_ARITH(RaviFunctionDef *def, int A, int B, int C,
def->f->getBasicBlockList().push_back(try_meta);
def->builder->SetInsertPoint(try_meta);
emit_update_savedpc(def, pc);
CreateCall5(def->builder, def->luaT_trybinTMF, def->L, rb, rc, ra,
def->types->kInt[tms]);
def->builder->CreateBr(done_block);
@ -408,6 +409,7 @@ void RaviCodeGenerator::emit_MOD(RaviFunctionDef *def, int A, int B, int C,
def->f->getBasicBlockList().push_back(try_meta);
def->builder->SetInsertPoint(try_meta);
emit_update_savedpc(def, pc);
CreateCall5(def->builder, def->luaT_trybinTMF, def->L, rb, rc, ra,
def->types->kInt[TM_MOD]);
def->builder->CreateBr(done_block);
@ -571,8 +573,9 @@ void RaviCodeGenerator::emit_IDIV(RaviFunctionDef *def, int A, int B, int C,
def->f->getBasicBlockList().push_back(try_meta);
def->builder->SetInsertPoint(try_meta);
emit_update_savedpc(def, pc);
CreateCall5(def->builder, def->luaT_trybinTMF, def->L, rb, rc, ra,
def->types->kInt[TM_MOD]);
def->types->kInt[TM_IDIV]);
def->builder->CreateBr(done_block);
def->f->getBasicBlockList().push_back(done_block);
@ -701,6 +704,7 @@ void RaviCodeGenerator::emit_POW(RaviFunctionDef *def, int A, int B, int C,
def->f->getBasicBlockList().push_back(try_meta);
def->builder->SetInsertPoint(try_meta);
emit_update_savedpc(def, pc);
CreateCall5(def->builder, def->luaT_trybinTMF, def->L, rb, rc, ra,
def->types->kInt[TM_POW]);
def->builder->CreateBr(done_block);
@ -813,6 +817,7 @@ void RaviCodeGenerator::emit_UNM(RaviFunctionDef *def, int A, int B, int pc) {
def->f->getBasicBlockList().push_back(try_meta);
def->builder->SetInsertPoint(try_meta);
emit_update_savedpc(def, pc);
CreateCall5(def->builder, def->luaT_trybinTMF, def->L, rb, rb, ra,
def->types->kInt[TM_UNM]);
def->builder->CreateBr(done_block);

@ -102,6 +102,7 @@ void RaviCodeGenerator::emit_EQ(RaviFunctionDef *def, int A, int B, int C,
} break;
default:
emit_update_savedpc(def, pc);
// Call luaV_equalobj with register B and C
result = CreateCall3(def->builder, callee, def->L, regB, regC);
}

@ -27,6 +27,7 @@ namespace ravi {
void RaviCodeGenerator::emit_CONCAT(RaviFunctionDef *def, int A, int B, int C,
int pc) {
emit_debug_trace(def, OP_CONCAT, pc);
emit_update_savedpc(def, pc);
CreateCall5(def->builder, def->raviV_op_concatF, def->L, def->ci_val,
llvm::ConstantInt::get(def->types->C_intT, A),
llvm::ConstantInt::get(def->types->C_intT, B),

@ -31,6 +31,7 @@ void RaviCodeGenerator::emit_SELF(RaviFunctionDef *def, int A, int B, int C,
// setobjs2s(L, ra + 1, rb);
// Protect(luaV_gettable(L, rb, RKC(i), ra));
emit_debug_trace(def, OP_SELF, pc);
emit_update_savedpc(def, pc);
emit_load_base(def);
llvm::Value *rb = emit_gep_register(def, B);
llvm::Value *ra1 = emit_gep_register(def, A + 1);
@ -44,6 +45,7 @@ void RaviCodeGenerator::emit_SELF(RaviFunctionDef *def, int A, int B, int C,
void RaviCodeGenerator::emit_LEN(RaviFunctionDef *def, int A, int B, int pc) {
// Protect(luaV_objlen(L, ra, RB(i)));
emit_debug_trace(def, OP_LEN, pc);
emit_update_savedpc(def, pc);
emit_load_base(def);
llvm::Value *ra = emit_gep_register(def, A);
llvm::Value *rb = emit_gep_register(def, B);
@ -55,6 +57,7 @@ void RaviCodeGenerator::emit_SETTABLE(RaviFunctionDef *def, int A, int B, int C,
int pc) {
// Protect(luaV_settable(L, ra, RKB(i), RKC(i)));
emit_debug_trace(def, OP_SETTABLE, pc);
emit_update_savedpc(def, pc);
emit_load_base(def);
llvm::Value *ra = emit_gep_register(def, A);
llvm::Value *rb = emit_gep_register_or_constant(def, B);
@ -67,6 +70,7 @@ void RaviCodeGenerator::emit_GETTABLE(RaviFunctionDef *def, int A, int B, int C,
int pc) {
// Protect(luaV_gettable(L, RB(i), RKC(i), ra));
emit_debug_trace(def, OP_GETTABLE, pc);
emit_update_savedpc(def, pc);
emit_load_base(def);
llvm::Value *ra = emit_gep_register(def, A);
llvm::Value *rb = emit_gep_register(def, B);
@ -389,6 +393,7 @@ void RaviCodeGenerator::emit_GETTABUP(RaviFunctionDef *def, int A, int B, int C,
// int b = GETARG_B(i);
// Protect(luaV_gettable(L, cl->upvals[b]->v, RKC(i), ra));
emit_debug_trace(def, OP_GETTABUP, pc);
emit_update_savedpc(def, pc);
emit_load_base(def);
llvm::Value *ra = emit_gep_register(def, A);
llvm::Value *rc = emit_gep_register_or_constant(def, C);
@ -407,6 +412,7 @@ void RaviCodeGenerator::emit_SETTABUP(RaviFunctionDef *def, int A, int B, int C,
// Protect(luaV_settable(L, cl->upvals[a]->v, RKB(i), RKC(i)));
emit_debug_trace(def, OP_SETTABUP, pc);
emit_update_savedpc(def, pc);
emit_load_base(def);
llvm::Value *rb = emit_gep_register_or_constant(def, B);
llvm::Value *rc = emit_gep_register_or_constant(def, C);

@ -49,6 +49,7 @@ void RaviCodeGenerator::emit_TFORCALL(RaviFunctionDef *def, int A, int B, int C,
// } break;
emit_debug_trace(def, OP_TFORCALL, pc);
emit_update_savedpc(def, pc);
// Load pointer to base
emit_load_base(def);

Loading…
Cancel
Save