From c0b965aee2f64fbfae0b20f41d714688649d20cf Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sat, 16 Mar 2024 17:44:22 +0800 Subject: [PATCH] remove `LOAD_INTEGER` --- include/pocketpy/opcodes.h | 1 - src/ceval.cpp | 5 ++--- src/expr.cpp | 12 ++---------- 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/include/pocketpy/opcodes.h b/include/pocketpy/opcodes.h index de0fe9df..7aa20e34 100644 --- a/include/pocketpy/opcodes.h +++ b/include/pocketpy/opcodes.h @@ -13,7 +13,6 @@ OPCODE(LOAD_CONST) OPCODE(LOAD_NONE) OPCODE(LOAD_TRUE) OPCODE(LOAD_FALSE) -OPCODE(LOAD_INTEGER) OPCODE(LOAD_ELLIPSIS) OPCODE(LOAD_FUNCTION) OPCODE(LOAD_NULL) diff --git a/src/ceval.cpp b/src/ceval.cpp index f9a20639..f2613b66 100644 --- a/src/ceval.cpp +++ b/src/ceval.cpp @@ -105,7 +105,6 @@ __NEXT_STEP:; TARGET(LOAD_NONE) PUSH(None); DISPATCH(); TARGET(LOAD_TRUE) PUSH(True); DISPATCH(); TARGET(LOAD_FALSE) PUSH(False); DISPATCH(); - TARGET(LOAD_INTEGER) PUSH(VAR((int16_t)byte.arg)); DISPATCH(); TARGET(LOAD_ELLIPSIS) PUSH(Ellipsis); DISPATCH(); TARGET(LOAD_FUNCTION) { FuncDecl_ decl = co->func_decls[byte.arg]; @@ -802,8 +801,8 @@ __NEXT_STEP:; *p = VAR(CAST(i64, *p) - 1); } DISPATCH(); /*****************************************/ - static_assert(OP_DEC_GLOBAL == 112); - case 113: case 114: case 115: case 116: case 117: case 118: case 119: case 120: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 128: case 129: case 130: case 131: case 132: case 133: case 134: case 135: case 136: case 137: case 138: case 139: case 140: case 141: case 142: case 143: case 144: case 145: case 146: case 147: case 148: case 149: case 150: case 151: case 152: case 153: case 154: case 155: case 156: case 157: case 158: case 159: case 160: case 161: case 162: case 163: case 164: case 165: case 166: case 167: case 168: case 169: case 170: case 171: case 172: case 173: case 174: case 175: case 176: case 177: case 178: case 179: case 180: case 181: case 182: case 183: case 184: case 185: case 186: case 187: case 188: case 189: case 190: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 200: case 201: case 202: case 203: case 204: case 205: case 206: case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: case 217: case 218: case 219: case 220: case 221: case 222: case 223: case 224: case 225: case 226: case 227: case 228: case 229: case 230: case 231: case 232: case 233: case 234: case 235: case 236: case 237: case 238: case 239: case 240: case 241: case 242: case 243: case 244: case 245: case 246: case 247: case 248: case 249: case 250: case 251: case 252: case 253: case 254: case 255: PK_UNREACHABLE() break; + static_assert(OP_DEC_GLOBAL == 111); + case 112: case 113: case 114: case 115: case 116: case 117: case 118: case 119: case 120: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 128: case 129: case 130: case 131: case 132: case 133: case 134: case 135: case 136: case 137: case 138: case 139: case 140: case 141: case 142: case 143: case 144: case 145: case 146: case 147: case 148: case 149: case 150: case 151: case 152: case 153: case 154: case 155: case 156: case 157: case 158: case 159: case 160: case 161: case 162: case 163: case 164: case 165: case 166: case 167: case 168: case 169: case 170: case 171: case 172: case 173: case 174: case 175: case 176: case 177: case 178: case 179: case 180: case 181: case 182: case 183: case 184: case 185: case 186: case 187: case 188: case 189: case 190: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 200: case 201: case 202: case 203: case 204: case 205: case 206: case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: case 217: case 218: case 219: case 220: case 221: case 222: case 223: case 224: case 225: case 226: case 227: case 228: case 229: case 230: case 231: case 232: case 233: case 234: case 235: case 236: case 237: case 238: case 239: case 240: case 241: case 242: case 243: case 244: case 245: case 246: case 247: case 248: case 249: case 250: case 251: case 252: case 253: case 254: case 255: PK_UNREACHABLE() break; } } diff --git a/src/expr.cpp b/src/expr.cpp index 791e3a8c..efb8550c 100644 --- a/src/expr.cpp +++ b/src/expr.cpp @@ -246,10 +246,6 @@ namespace pkpy{ VM* vm = ctx->vm; if(std::holds_alternative(value)){ i64 _val = std::get(value); - if(is_imm_int(_val)){ - ctx->emit_(OP_LOAD_INTEGER, (uint16_t)_val, line); - return; - } ctx->emit_(OP_LOAD_CONST, ctx->add_const(VAR(_val)), line); return; } @@ -272,11 +268,7 @@ namespace pkpy{ LiteralExpr* lit = static_cast(child.get()); if(std::holds_alternative(lit->value)){ i64 _val = -std::get(lit->value); - if(is_imm_int(_val)){ - ctx->emit_(OP_LOAD_INTEGER, (uint16_t)_val, line); - }else{ - ctx->emit_(OP_LOAD_CONST, ctx->add_const(VAR(_val)), line); - } + ctx->emit_(OP_LOAD_CONST, ctx->add_const(VAR(_val)), line); return; } if(std::holds_alternative(lit->value)){ @@ -595,7 +587,7 @@ namespace pkpy{ for(auto& item: args) item->emit_(ctx); for(auto& item: kwargs){ uint16_t index = StrName(item.first.sv()).index; - ctx->emit_(OP_LOAD_INTEGER, index, line); + ctx->emit_(OP_LOAD_CONST, ctx->add_const(py_var(ctx->vm, index)), line); item.second->emit_(ctx); } int KWARGC = kwargs.size();