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