mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-21 03:50:16 +00:00
some fix
This commit is contained in:
parent
79ae2cdc28
commit
f1dc9486a5
@ -84,6 +84,7 @@ OPCODE(BITWISE_XOR)
|
||||
OPCODE(BINARY_MATMUL)
|
||||
|
||||
OPCODE(IS_OP)
|
||||
OPCODE(IS_NOT_OP)
|
||||
OPCODE(CONTAINS_OP)
|
||||
/**************************/
|
||||
OPCODE(JUMP_ABSOLUTE)
|
||||
|
@ -542,11 +542,13 @@ __NEXT_STEP:
|
||||
case OP_COMPARE_EQ:{
|
||||
PyVar _1 = POPX();
|
||||
PyVar _0 = TOP();
|
||||
PREDICT_INT_OP(==)
|
||||
TOP() = VAR(py_eq(_0, _1));
|
||||
} DISPATCH()
|
||||
case OP_COMPARE_NE:{
|
||||
PyVar _1 = POPX();
|
||||
PyVar _0 = TOP();
|
||||
PREDICT_INT_OP(!=)
|
||||
TOP() = VAR(py_ne(_0, _1));
|
||||
} DISPATCH()
|
||||
case OP_COMPARE_GT:{
|
||||
@ -616,7 +618,12 @@ __NEXT_STEP:
|
||||
case OP_IS_OP:{
|
||||
PyVar _1 = POPX(); // rhs
|
||||
PyVar _0 = TOP(); // lhs
|
||||
TOP() = VAR(static_cast<bool>((uint16_t)(_0==_1) ^ byte.arg));
|
||||
TOP() = _0 == _1 ? True : False;
|
||||
} DISPATCH()
|
||||
case OP_IS_NOT_OP:{
|
||||
PyVar _1 = POPX(); // rhs
|
||||
PyVar _0 = TOP(); // lhs
|
||||
TOP() = _0 != _1 ? True : False;
|
||||
} DISPATCH()
|
||||
case OP_CONTAINS_OP:{
|
||||
// a in b -> b __contains__ a
|
||||
|
@ -709,10 +709,10 @@ namespace pkpy{
|
||||
case TK(">"): ctx->emit_(OP_COMPARE_GT, BC_NOARG, line); break;
|
||||
case TK(">="): ctx->emit_(OP_COMPARE_GE, BC_NOARG, line); break;
|
||||
|
||||
case TK("in"): ctx->emit_(OP_CONTAINS_OP, 0, line); break;
|
||||
case TK("not in"): ctx->emit_(OP_CONTAINS_OP, 1, line); break;
|
||||
case TK("is"): ctx->emit_(OP_IS_OP, 0, line); break;
|
||||
case TK("is not"): ctx->emit_(OP_IS_OP, 1, line); break;
|
||||
case TK("in"): ctx->emit_(OP_CONTAINS_OP, 0, line); break;
|
||||
case TK("not in"): ctx->emit_(OP_CONTAINS_OP, 1, line); break;
|
||||
case TK("is"): ctx->emit_(OP_IS_OP, BC_NOARG, line); break;
|
||||
case TK("is not"): ctx->emit_(OP_IS_NOT_OP, BC_NOARG, line); break;
|
||||
|
||||
case TK("<<"): ctx->emit_(OP_BITWISE_LSHIFT, BC_NOARG, line); break;
|
||||
case TK(">>"): ctx->emit_(OP_BITWISE_RSHIFT, BC_NOARG, line); break;
|
||||
|
@ -224,7 +224,6 @@ namespace pkpy{
|
||||
}
|
||||
|
||||
bool VM::py_eq(PyVar lhs, PyVar rhs){
|
||||
if(lhs == rhs) return true;
|
||||
const PyTypeInfo* ti = _tp_info(lhs);
|
||||
PyVar res;
|
||||
if(ti->m__eq__){
|
||||
|
Loading…
x
Reference in New Issue
Block a user