mirror of
https://github.com/python/cpython.git
synced 2026-01-26 21:03:34 +00:00
GH-142718: JIT: Fix crash due to incorrect caching on side exits when exiting jitted code. (GH-142762)
JIT: Fix crash due to incorrect caching on side exits when exiting jitted code. * Make sure that stack is in correct state at side exits with TOS cached values * Simplify choice of cached items for side exits
This commit is contained in:
parent
1a9cdaf63a
commit
27a2e49d18
416
Include/internal/pycore_uop_ids.h
generated
416
Include/internal/pycore_uop_ids.h
generated
@ -906,212 +906,216 @@ extern "C" {
|
||||
#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1099
|
||||
#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1100
|
||||
#define _LOAD_FAST_CHECK_r01 1101
|
||||
#define _LOAD_FAST_LOAD_FAST_r02 1102
|
||||
#define _LOAD_FAST_LOAD_FAST_r13 1103
|
||||
#define _LOAD_FROM_DICT_OR_DEREF_r11 1104
|
||||
#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1105
|
||||
#define _LOAD_GLOBAL_r00 1106
|
||||
#define _LOAD_GLOBAL_BUILTINS_r01 1107
|
||||
#define _LOAD_GLOBAL_MODULE_r01 1108
|
||||
#define _LOAD_LOCALS_r01 1109
|
||||
#define _LOAD_NAME_r01 1110
|
||||
#define _LOAD_SMALL_INT_r01 1111
|
||||
#define _LOAD_SMALL_INT_r12 1112
|
||||
#define _LOAD_SMALL_INT_r23 1113
|
||||
#define _LOAD_SMALL_INT_0_r01 1114
|
||||
#define _LOAD_SMALL_INT_0_r12 1115
|
||||
#define _LOAD_SMALL_INT_0_r23 1116
|
||||
#define _LOAD_SMALL_INT_1_r01 1117
|
||||
#define _LOAD_SMALL_INT_1_r12 1118
|
||||
#define _LOAD_SMALL_INT_1_r23 1119
|
||||
#define _LOAD_SMALL_INT_2_r01 1120
|
||||
#define _LOAD_SMALL_INT_2_r12 1121
|
||||
#define _LOAD_SMALL_INT_2_r23 1122
|
||||
#define _LOAD_SMALL_INT_3_r01 1123
|
||||
#define _LOAD_SMALL_INT_3_r12 1124
|
||||
#define _LOAD_SMALL_INT_3_r23 1125
|
||||
#define _LOAD_SPECIAL_r00 1126
|
||||
#define _LOAD_SUPER_ATTR_ATTR_r31 1127
|
||||
#define _LOAD_SUPER_ATTR_METHOD_r32 1128
|
||||
#define _MAKE_CALLARGS_A_TUPLE_r33 1129
|
||||
#define _MAKE_CELL_r00 1130
|
||||
#define _MAKE_FUNCTION_r11 1131
|
||||
#define _MAKE_WARM_r00 1132
|
||||
#define _MAKE_WARM_r11 1133
|
||||
#define _MAKE_WARM_r22 1134
|
||||
#define _MAKE_WARM_r33 1135
|
||||
#define _MAP_ADD_r20 1136
|
||||
#define _MATCH_CLASS_r31 1137
|
||||
#define _MATCH_KEYS_r23 1138
|
||||
#define _MATCH_MAPPING_r02 1139
|
||||
#define _MATCH_MAPPING_r12 1140
|
||||
#define _MATCH_MAPPING_r23 1141
|
||||
#define _MATCH_SEQUENCE_r02 1142
|
||||
#define _MATCH_SEQUENCE_r12 1143
|
||||
#define _MATCH_SEQUENCE_r23 1144
|
||||
#define _MAYBE_EXPAND_METHOD_r00 1145
|
||||
#define _MAYBE_EXPAND_METHOD_KW_r11 1146
|
||||
#define _MONITOR_CALL_r00 1147
|
||||
#define _MONITOR_CALL_KW_r11 1148
|
||||
#define _MONITOR_JUMP_BACKWARD_r00 1149
|
||||
#define _MONITOR_JUMP_BACKWARD_r11 1150
|
||||
#define _MONITOR_JUMP_BACKWARD_r22 1151
|
||||
#define _MONITOR_JUMP_BACKWARD_r33 1152
|
||||
#define _MONITOR_RESUME_r00 1153
|
||||
#define _NOP_r00 1154
|
||||
#define _NOP_r11 1155
|
||||
#define _NOP_r22 1156
|
||||
#define _NOP_r33 1157
|
||||
#define _POP_CALL_r20 1158
|
||||
#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1159
|
||||
#define _POP_CALL_ONE_r30 1160
|
||||
#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1161
|
||||
#define _POP_CALL_TWO_r30 1162
|
||||
#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1163
|
||||
#define _POP_EXCEPT_r10 1164
|
||||
#define _POP_ITER_r20 1165
|
||||
#define _POP_JUMP_IF_FALSE_r00 1166
|
||||
#define _POP_JUMP_IF_FALSE_r10 1167
|
||||
#define _POP_JUMP_IF_FALSE_r21 1168
|
||||
#define _POP_JUMP_IF_FALSE_r32 1169
|
||||
#define _POP_JUMP_IF_TRUE_r00 1170
|
||||
#define _POP_JUMP_IF_TRUE_r10 1171
|
||||
#define _POP_JUMP_IF_TRUE_r21 1172
|
||||
#define _POP_JUMP_IF_TRUE_r32 1173
|
||||
#define _POP_TOP_r10 1174
|
||||
#define _POP_TOP_FLOAT_r00 1175
|
||||
#define _POP_TOP_FLOAT_r10 1176
|
||||
#define _POP_TOP_FLOAT_r21 1177
|
||||
#define _POP_TOP_FLOAT_r32 1178
|
||||
#define _POP_TOP_INT_r00 1179
|
||||
#define _POP_TOP_INT_r10 1180
|
||||
#define _POP_TOP_INT_r21 1181
|
||||
#define _POP_TOP_INT_r32 1182
|
||||
#define _POP_TOP_LOAD_CONST_INLINE_r11 1183
|
||||
#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1184
|
||||
#define _POP_TOP_NOP_r00 1185
|
||||
#define _POP_TOP_NOP_r10 1186
|
||||
#define _POP_TOP_NOP_r21 1187
|
||||
#define _POP_TOP_NOP_r32 1188
|
||||
#define _POP_TOP_UNICODE_r00 1189
|
||||
#define _POP_TOP_UNICODE_r10 1190
|
||||
#define _POP_TOP_UNICODE_r21 1191
|
||||
#define _POP_TOP_UNICODE_r32 1192
|
||||
#define _POP_TWO_r20 1193
|
||||
#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1194
|
||||
#define _PUSH_EXC_INFO_r02 1195
|
||||
#define _PUSH_EXC_INFO_r12 1196
|
||||
#define _PUSH_EXC_INFO_r23 1197
|
||||
#define _PUSH_FRAME_r10 1198
|
||||
#define _PUSH_NULL_r01 1199
|
||||
#define _PUSH_NULL_r12 1200
|
||||
#define _PUSH_NULL_r23 1201
|
||||
#define _PUSH_NULL_CONDITIONAL_r00 1202
|
||||
#define _PY_FRAME_GENERAL_r01 1203
|
||||
#define _PY_FRAME_KW_r11 1204
|
||||
#define _QUICKEN_RESUME_r00 1205
|
||||
#define _QUICKEN_RESUME_r11 1206
|
||||
#define _QUICKEN_RESUME_r22 1207
|
||||
#define _QUICKEN_RESUME_r33 1208
|
||||
#define _REPLACE_WITH_TRUE_r11 1209
|
||||
#define _RESUME_CHECK_r00 1210
|
||||
#define _RESUME_CHECK_r11 1211
|
||||
#define _RESUME_CHECK_r22 1212
|
||||
#define _RESUME_CHECK_r33 1213
|
||||
#define _RETURN_GENERATOR_r01 1214
|
||||
#define _RETURN_VALUE_r11 1215
|
||||
#define _SAVE_RETURN_OFFSET_r00 1216
|
||||
#define _SAVE_RETURN_OFFSET_r11 1217
|
||||
#define _SAVE_RETURN_OFFSET_r22 1218
|
||||
#define _SAVE_RETURN_OFFSET_r33 1219
|
||||
#define _SEND_r22 1220
|
||||
#define _SEND_GEN_FRAME_r22 1221
|
||||
#define _SETUP_ANNOTATIONS_r00 1222
|
||||
#define _SET_ADD_r10 1223
|
||||
#define _SET_FUNCTION_ATTRIBUTE_r01 1224
|
||||
#define _SET_FUNCTION_ATTRIBUTE_r11 1225
|
||||
#define _SET_FUNCTION_ATTRIBUTE_r21 1226
|
||||
#define _SET_FUNCTION_ATTRIBUTE_r32 1227
|
||||
#define _SET_IP_r00 1228
|
||||
#define _SET_IP_r11 1229
|
||||
#define _SET_IP_r22 1230
|
||||
#define _SET_IP_r33 1231
|
||||
#define _SET_UPDATE_r10 1232
|
||||
#define _SPILL_OR_RELOAD_r01 1233
|
||||
#define _SPILL_OR_RELOAD_r02 1234
|
||||
#define _SPILL_OR_RELOAD_r03 1235
|
||||
#define _SPILL_OR_RELOAD_r10 1236
|
||||
#define _SPILL_OR_RELOAD_r12 1237
|
||||
#define _SPILL_OR_RELOAD_r13 1238
|
||||
#define _SPILL_OR_RELOAD_r20 1239
|
||||
#define _SPILL_OR_RELOAD_r21 1240
|
||||
#define _SPILL_OR_RELOAD_r23 1241
|
||||
#define _SPILL_OR_RELOAD_r30 1242
|
||||
#define _SPILL_OR_RELOAD_r31 1243
|
||||
#define _SPILL_OR_RELOAD_r32 1244
|
||||
#define _START_EXECUTOR_r00 1245
|
||||
#define _STORE_ATTR_r20 1246
|
||||
#define _STORE_ATTR_INSTANCE_VALUE_r20 1247
|
||||
#define _STORE_ATTR_SLOT_r20 1248
|
||||
#define _STORE_ATTR_WITH_HINT_r20 1249
|
||||
#define _STORE_DEREF_r10 1250
|
||||
#define _STORE_FAST_r10 1251
|
||||
#define _STORE_FAST_0_r10 1252
|
||||
#define _STORE_FAST_1_r10 1253
|
||||
#define _STORE_FAST_2_r10 1254
|
||||
#define _STORE_FAST_3_r10 1255
|
||||
#define _STORE_FAST_4_r10 1256
|
||||
#define _STORE_FAST_5_r10 1257
|
||||
#define _STORE_FAST_6_r10 1258
|
||||
#define _STORE_FAST_7_r10 1259
|
||||
#define _STORE_FAST_LOAD_FAST_r11 1260
|
||||
#define _STORE_FAST_STORE_FAST_r20 1261
|
||||
#define _STORE_GLOBAL_r10 1262
|
||||
#define _STORE_NAME_r10 1263
|
||||
#define _STORE_SLICE_r30 1264
|
||||
#define _STORE_SUBSCR_r30 1265
|
||||
#define _STORE_SUBSCR_DICT_r31 1266
|
||||
#define _STORE_SUBSCR_LIST_INT_r32 1267
|
||||
#define _SWAP_r11 1268
|
||||
#define _SWAP_2_r02 1269
|
||||
#define _SWAP_2_r12 1270
|
||||
#define _SWAP_2_r22 1271
|
||||
#define _SWAP_2_r33 1272
|
||||
#define _SWAP_3_r03 1273
|
||||
#define _SWAP_3_r13 1274
|
||||
#define _SWAP_3_r23 1275
|
||||
#define _SWAP_3_r33 1276
|
||||
#define _TIER2_RESUME_CHECK_r00 1277
|
||||
#define _TIER2_RESUME_CHECK_r11 1278
|
||||
#define _TIER2_RESUME_CHECK_r22 1279
|
||||
#define _TIER2_RESUME_CHECK_r33 1280
|
||||
#define _TO_BOOL_r11 1281
|
||||
#define _TO_BOOL_BOOL_r01 1282
|
||||
#define _TO_BOOL_BOOL_r11 1283
|
||||
#define _TO_BOOL_BOOL_r22 1284
|
||||
#define _TO_BOOL_BOOL_r33 1285
|
||||
#define _TO_BOOL_INT_r11 1286
|
||||
#define _TO_BOOL_LIST_r11 1287
|
||||
#define _TO_BOOL_NONE_r01 1288
|
||||
#define _TO_BOOL_NONE_r11 1289
|
||||
#define _TO_BOOL_NONE_r22 1290
|
||||
#define _TO_BOOL_NONE_r33 1291
|
||||
#define _TO_BOOL_STR_r11 1292
|
||||
#define _TRACE_RECORD_r00 1293
|
||||
#define _UNARY_INVERT_r11 1294
|
||||
#define _UNARY_NEGATIVE_r11 1295
|
||||
#define _UNARY_NOT_r01 1296
|
||||
#define _UNARY_NOT_r11 1297
|
||||
#define _UNARY_NOT_r22 1298
|
||||
#define _UNARY_NOT_r33 1299
|
||||
#define _UNPACK_EX_r10 1300
|
||||
#define _UNPACK_SEQUENCE_r10 1301
|
||||
#define _UNPACK_SEQUENCE_LIST_r10 1302
|
||||
#define _UNPACK_SEQUENCE_TUPLE_r10 1303
|
||||
#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1304
|
||||
#define _WITH_EXCEPT_START_r33 1305
|
||||
#define _YIELD_VALUE_r11 1306
|
||||
#define MAX_UOP_REGS_ID 1306
|
||||
#define _LOAD_FAST_CHECK_r12 1102
|
||||
#define _LOAD_FAST_CHECK_r23 1103
|
||||
#define _LOAD_FAST_LOAD_FAST_r02 1104
|
||||
#define _LOAD_FAST_LOAD_FAST_r13 1105
|
||||
#define _LOAD_FROM_DICT_OR_DEREF_r11 1106
|
||||
#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1107
|
||||
#define _LOAD_GLOBAL_r00 1108
|
||||
#define _LOAD_GLOBAL_BUILTINS_r01 1109
|
||||
#define _LOAD_GLOBAL_MODULE_r01 1110
|
||||
#define _LOAD_LOCALS_r01 1111
|
||||
#define _LOAD_LOCALS_r12 1112
|
||||
#define _LOAD_LOCALS_r23 1113
|
||||
#define _LOAD_NAME_r01 1114
|
||||
#define _LOAD_SMALL_INT_r01 1115
|
||||
#define _LOAD_SMALL_INT_r12 1116
|
||||
#define _LOAD_SMALL_INT_r23 1117
|
||||
#define _LOAD_SMALL_INT_0_r01 1118
|
||||
#define _LOAD_SMALL_INT_0_r12 1119
|
||||
#define _LOAD_SMALL_INT_0_r23 1120
|
||||
#define _LOAD_SMALL_INT_1_r01 1121
|
||||
#define _LOAD_SMALL_INT_1_r12 1122
|
||||
#define _LOAD_SMALL_INT_1_r23 1123
|
||||
#define _LOAD_SMALL_INT_2_r01 1124
|
||||
#define _LOAD_SMALL_INT_2_r12 1125
|
||||
#define _LOAD_SMALL_INT_2_r23 1126
|
||||
#define _LOAD_SMALL_INT_3_r01 1127
|
||||
#define _LOAD_SMALL_INT_3_r12 1128
|
||||
#define _LOAD_SMALL_INT_3_r23 1129
|
||||
#define _LOAD_SPECIAL_r00 1130
|
||||
#define _LOAD_SUPER_ATTR_ATTR_r31 1131
|
||||
#define _LOAD_SUPER_ATTR_METHOD_r32 1132
|
||||
#define _MAKE_CALLARGS_A_TUPLE_r33 1133
|
||||
#define _MAKE_CELL_r00 1134
|
||||
#define _MAKE_FUNCTION_r11 1135
|
||||
#define _MAKE_WARM_r00 1136
|
||||
#define _MAKE_WARM_r11 1137
|
||||
#define _MAKE_WARM_r22 1138
|
||||
#define _MAKE_WARM_r33 1139
|
||||
#define _MAP_ADD_r20 1140
|
||||
#define _MATCH_CLASS_r31 1141
|
||||
#define _MATCH_KEYS_r23 1142
|
||||
#define _MATCH_MAPPING_r02 1143
|
||||
#define _MATCH_MAPPING_r12 1144
|
||||
#define _MATCH_MAPPING_r23 1145
|
||||
#define _MATCH_SEQUENCE_r02 1146
|
||||
#define _MATCH_SEQUENCE_r12 1147
|
||||
#define _MATCH_SEQUENCE_r23 1148
|
||||
#define _MAYBE_EXPAND_METHOD_r00 1149
|
||||
#define _MAYBE_EXPAND_METHOD_KW_r11 1150
|
||||
#define _MONITOR_CALL_r00 1151
|
||||
#define _MONITOR_CALL_KW_r11 1152
|
||||
#define _MONITOR_JUMP_BACKWARD_r00 1153
|
||||
#define _MONITOR_JUMP_BACKWARD_r11 1154
|
||||
#define _MONITOR_JUMP_BACKWARD_r22 1155
|
||||
#define _MONITOR_JUMP_BACKWARD_r33 1156
|
||||
#define _MONITOR_RESUME_r00 1157
|
||||
#define _NOP_r00 1158
|
||||
#define _NOP_r11 1159
|
||||
#define _NOP_r22 1160
|
||||
#define _NOP_r33 1161
|
||||
#define _POP_CALL_r20 1162
|
||||
#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1163
|
||||
#define _POP_CALL_ONE_r30 1164
|
||||
#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1165
|
||||
#define _POP_CALL_TWO_r30 1166
|
||||
#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1167
|
||||
#define _POP_EXCEPT_r10 1168
|
||||
#define _POP_ITER_r20 1169
|
||||
#define _POP_JUMP_IF_FALSE_r00 1170
|
||||
#define _POP_JUMP_IF_FALSE_r10 1171
|
||||
#define _POP_JUMP_IF_FALSE_r21 1172
|
||||
#define _POP_JUMP_IF_FALSE_r32 1173
|
||||
#define _POP_JUMP_IF_TRUE_r00 1174
|
||||
#define _POP_JUMP_IF_TRUE_r10 1175
|
||||
#define _POP_JUMP_IF_TRUE_r21 1176
|
||||
#define _POP_JUMP_IF_TRUE_r32 1177
|
||||
#define _POP_TOP_r10 1178
|
||||
#define _POP_TOP_FLOAT_r00 1179
|
||||
#define _POP_TOP_FLOAT_r10 1180
|
||||
#define _POP_TOP_FLOAT_r21 1181
|
||||
#define _POP_TOP_FLOAT_r32 1182
|
||||
#define _POP_TOP_INT_r00 1183
|
||||
#define _POP_TOP_INT_r10 1184
|
||||
#define _POP_TOP_INT_r21 1185
|
||||
#define _POP_TOP_INT_r32 1186
|
||||
#define _POP_TOP_LOAD_CONST_INLINE_r11 1187
|
||||
#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1188
|
||||
#define _POP_TOP_NOP_r00 1189
|
||||
#define _POP_TOP_NOP_r10 1190
|
||||
#define _POP_TOP_NOP_r21 1191
|
||||
#define _POP_TOP_NOP_r32 1192
|
||||
#define _POP_TOP_UNICODE_r00 1193
|
||||
#define _POP_TOP_UNICODE_r10 1194
|
||||
#define _POP_TOP_UNICODE_r21 1195
|
||||
#define _POP_TOP_UNICODE_r32 1196
|
||||
#define _POP_TWO_r20 1197
|
||||
#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1198
|
||||
#define _PUSH_EXC_INFO_r02 1199
|
||||
#define _PUSH_EXC_INFO_r12 1200
|
||||
#define _PUSH_EXC_INFO_r23 1201
|
||||
#define _PUSH_FRAME_r10 1202
|
||||
#define _PUSH_NULL_r01 1203
|
||||
#define _PUSH_NULL_r12 1204
|
||||
#define _PUSH_NULL_r23 1205
|
||||
#define _PUSH_NULL_CONDITIONAL_r00 1206
|
||||
#define _PY_FRAME_GENERAL_r01 1207
|
||||
#define _PY_FRAME_KW_r11 1208
|
||||
#define _QUICKEN_RESUME_r00 1209
|
||||
#define _QUICKEN_RESUME_r11 1210
|
||||
#define _QUICKEN_RESUME_r22 1211
|
||||
#define _QUICKEN_RESUME_r33 1212
|
||||
#define _REPLACE_WITH_TRUE_r11 1213
|
||||
#define _RESUME_CHECK_r00 1214
|
||||
#define _RESUME_CHECK_r11 1215
|
||||
#define _RESUME_CHECK_r22 1216
|
||||
#define _RESUME_CHECK_r33 1217
|
||||
#define _RETURN_GENERATOR_r01 1218
|
||||
#define _RETURN_VALUE_r11 1219
|
||||
#define _SAVE_RETURN_OFFSET_r00 1220
|
||||
#define _SAVE_RETURN_OFFSET_r11 1221
|
||||
#define _SAVE_RETURN_OFFSET_r22 1222
|
||||
#define _SAVE_RETURN_OFFSET_r33 1223
|
||||
#define _SEND_r22 1224
|
||||
#define _SEND_GEN_FRAME_r22 1225
|
||||
#define _SETUP_ANNOTATIONS_r00 1226
|
||||
#define _SET_ADD_r10 1227
|
||||
#define _SET_FUNCTION_ATTRIBUTE_r01 1228
|
||||
#define _SET_FUNCTION_ATTRIBUTE_r11 1229
|
||||
#define _SET_FUNCTION_ATTRIBUTE_r21 1230
|
||||
#define _SET_FUNCTION_ATTRIBUTE_r32 1231
|
||||
#define _SET_IP_r00 1232
|
||||
#define _SET_IP_r11 1233
|
||||
#define _SET_IP_r22 1234
|
||||
#define _SET_IP_r33 1235
|
||||
#define _SET_UPDATE_r10 1236
|
||||
#define _SPILL_OR_RELOAD_r01 1237
|
||||
#define _SPILL_OR_RELOAD_r02 1238
|
||||
#define _SPILL_OR_RELOAD_r03 1239
|
||||
#define _SPILL_OR_RELOAD_r10 1240
|
||||
#define _SPILL_OR_RELOAD_r12 1241
|
||||
#define _SPILL_OR_RELOAD_r13 1242
|
||||
#define _SPILL_OR_RELOAD_r20 1243
|
||||
#define _SPILL_OR_RELOAD_r21 1244
|
||||
#define _SPILL_OR_RELOAD_r23 1245
|
||||
#define _SPILL_OR_RELOAD_r30 1246
|
||||
#define _SPILL_OR_RELOAD_r31 1247
|
||||
#define _SPILL_OR_RELOAD_r32 1248
|
||||
#define _START_EXECUTOR_r00 1249
|
||||
#define _STORE_ATTR_r20 1250
|
||||
#define _STORE_ATTR_INSTANCE_VALUE_r20 1251
|
||||
#define _STORE_ATTR_SLOT_r20 1252
|
||||
#define _STORE_ATTR_WITH_HINT_r20 1253
|
||||
#define _STORE_DEREF_r10 1254
|
||||
#define _STORE_FAST_r10 1255
|
||||
#define _STORE_FAST_0_r10 1256
|
||||
#define _STORE_FAST_1_r10 1257
|
||||
#define _STORE_FAST_2_r10 1258
|
||||
#define _STORE_FAST_3_r10 1259
|
||||
#define _STORE_FAST_4_r10 1260
|
||||
#define _STORE_FAST_5_r10 1261
|
||||
#define _STORE_FAST_6_r10 1262
|
||||
#define _STORE_FAST_7_r10 1263
|
||||
#define _STORE_FAST_LOAD_FAST_r11 1264
|
||||
#define _STORE_FAST_STORE_FAST_r20 1265
|
||||
#define _STORE_GLOBAL_r10 1266
|
||||
#define _STORE_NAME_r10 1267
|
||||
#define _STORE_SLICE_r30 1268
|
||||
#define _STORE_SUBSCR_r30 1269
|
||||
#define _STORE_SUBSCR_DICT_r31 1270
|
||||
#define _STORE_SUBSCR_LIST_INT_r32 1271
|
||||
#define _SWAP_r11 1272
|
||||
#define _SWAP_2_r02 1273
|
||||
#define _SWAP_2_r12 1274
|
||||
#define _SWAP_2_r22 1275
|
||||
#define _SWAP_2_r33 1276
|
||||
#define _SWAP_3_r03 1277
|
||||
#define _SWAP_3_r13 1278
|
||||
#define _SWAP_3_r23 1279
|
||||
#define _SWAP_3_r33 1280
|
||||
#define _TIER2_RESUME_CHECK_r00 1281
|
||||
#define _TIER2_RESUME_CHECK_r11 1282
|
||||
#define _TIER2_RESUME_CHECK_r22 1283
|
||||
#define _TIER2_RESUME_CHECK_r33 1284
|
||||
#define _TO_BOOL_r11 1285
|
||||
#define _TO_BOOL_BOOL_r01 1286
|
||||
#define _TO_BOOL_BOOL_r11 1287
|
||||
#define _TO_BOOL_BOOL_r22 1288
|
||||
#define _TO_BOOL_BOOL_r33 1289
|
||||
#define _TO_BOOL_INT_r11 1290
|
||||
#define _TO_BOOL_LIST_r11 1291
|
||||
#define _TO_BOOL_NONE_r01 1292
|
||||
#define _TO_BOOL_NONE_r11 1293
|
||||
#define _TO_BOOL_NONE_r22 1294
|
||||
#define _TO_BOOL_NONE_r33 1295
|
||||
#define _TO_BOOL_STR_r11 1296
|
||||
#define _TRACE_RECORD_r00 1297
|
||||
#define _UNARY_INVERT_r11 1298
|
||||
#define _UNARY_NEGATIVE_r11 1299
|
||||
#define _UNARY_NOT_r01 1300
|
||||
#define _UNARY_NOT_r11 1301
|
||||
#define _UNARY_NOT_r22 1302
|
||||
#define _UNARY_NOT_r33 1303
|
||||
#define _UNPACK_EX_r10 1304
|
||||
#define _UNPACK_SEQUENCE_r10 1305
|
||||
#define _UNPACK_SEQUENCE_LIST_r10 1306
|
||||
#define _UNPACK_SEQUENCE_TUPLE_r10 1307
|
||||
#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1308
|
||||
#define _WITH_EXCEPT_START_r33 1309
|
||||
#define _YIELD_VALUE_r11 1310
|
||||
#define MAX_UOP_REGS_ID 1310
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
162
Include/internal/pycore_uop_metadata.h
generated
162
Include/internal/pycore_uop_metadata.h
generated
@ -405,11 +405,11 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
},
|
||||
},
|
||||
[_LOAD_FAST_CHECK] = {
|
||||
.best = { 0, 0, 0, 0 },
|
||||
.best = { 0, 1, 2, 2 },
|
||||
.entries = {
|
||||
{ 1, 0, _LOAD_FAST_CHECK_r01 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 1, _LOAD_FAST_CHECK_r12 },
|
||||
{ 3, 2, _LOAD_FAST_CHECK_r23 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -813,7 +813,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _UNARY_NEGATIVE_r11 },
|
||||
{ 1, 1, _UNARY_NEGATIVE_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -831,7 +831,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _TO_BOOL_r11 },
|
||||
{ 1, 1, _TO_BOOL_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -939,7 +939,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _UNARY_INVERT_r11 },
|
||||
{ 1, 1, _UNARY_INVERT_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1093,7 +1093,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _BINARY_OP_INPLACE_ADD_UNICODE_r20 },
|
||||
{ 0, 2, _BINARY_OP_INPLACE_ADD_UNICODE_r20 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1102,7 +1102,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _GUARD_BINARY_OP_EXTEND_r22 },
|
||||
{ 2, 2, _GUARD_BINARY_OP_EXTEND_r22 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1111,7 +1111,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _BINARY_OP_EXTEND_r21 },
|
||||
{ 1, 2, _BINARY_OP_EXTEND_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1121,7 +1121,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _BINARY_SLICE_r31 },
|
||||
{ 1, 3, _BINARY_SLICE_r31 },
|
||||
},
|
||||
},
|
||||
[_STORE_SLICE] = {
|
||||
@ -1130,7 +1130,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _STORE_SLICE_r30 },
|
||||
{ 0, 3, _STORE_SLICE_r30 },
|
||||
},
|
||||
},
|
||||
[_BINARY_OP_SUBSCR_LIST_INT] = {
|
||||
@ -1138,7 +1138,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _BINARY_OP_SUBSCR_LIST_INT_r21 },
|
||||
{ 1, 2, _BINARY_OP_SUBSCR_LIST_INT_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1147,7 +1147,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _BINARY_OP_SUBSCR_LIST_SLICE_r21 },
|
||||
{ 1, 2, _BINARY_OP_SUBSCR_LIST_SLICE_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1210,7 +1210,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _BINARY_OP_SUBSCR_DICT_r21 },
|
||||
{ 1, 2, _BINARY_OP_SUBSCR_DICT_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1245,7 +1245,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _SET_ADD_r10 },
|
||||
{ 0, 1, _SET_ADD_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1256,7 +1256,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _STORE_SUBSCR_r30 },
|
||||
{ 0, 3, _STORE_SUBSCR_r30 },
|
||||
},
|
||||
},
|
||||
[_STORE_SUBSCR_LIST_INT] = {
|
||||
@ -1274,7 +1274,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _STORE_SUBSCR_DICT_r31 },
|
||||
{ 1, 3, _STORE_SUBSCR_DICT_r31 },
|
||||
},
|
||||
},
|
||||
[_DELETE_SUBSCR] = {
|
||||
@ -1282,7 +1282,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _DELETE_SUBSCR_r20 },
|
||||
{ 0, 2, _DELETE_SUBSCR_r20 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1290,7 +1290,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _CALL_INTRINSIC_1_r11 },
|
||||
{ 1, 1, _CALL_INTRINSIC_1_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1300,7 +1300,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _CALL_INTRINSIC_2_r21 },
|
||||
{ 1, 2, _CALL_INTRINSIC_2_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1308,7 +1308,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _RETURN_VALUE_r11 },
|
||||
{ 1, 1, _RETURN_VALUE_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1317,7 +1317,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _GET_AITER_r11 },
|
||||
{ 1, 1, _GET_AITER_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1326,7 +1326,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _GET_ANEXT_r12 },
|
||||
{ 2, 1, _GET_ANEXT_r12 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1335,7 +1335,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _GET_AWAITABLE_r11 },
|
||||
{ 1, 1, _GET_AWAITABLE_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1362,7 +1362,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _POP_EXCEPT_r10 },
|
||||
{ 0, 1, _POP_EXCEPT_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1389,7 +1389,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _STORE_NAME_r10 },
|
||||
{ 0, 1, _STORE_NAME_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1407,7 +1407,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _UNPACK_SEQUENCE_r10 },
|
||||
{ 0, 1, _UNPACK_SEQUENCE_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1443,7 +1443,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _UNPACK_EX_r10 },
|
||||
{ 0, 1, _UNPACK_EX_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1453,7 +1453,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _STORE_ATTR_r20 },
|
||||
{ 0, 2, _STORE_ATTR_r20 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1461,7 +1461,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _DELETE_ATTR_r10 },
|
||||
{ 0, 1, _DELETE_ATTR_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1470,7 +1470,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _STORE_GLOBAL_r10 },
|
||||
{ 0, 1, _STORE_GLOBAL_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1485,11 +1485,11 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
},
|
||||
},
|
||||
[_LOAD_LOCALS] = {
|
||||
.best = { 0, 0, 0, 0 },
|
||||
.best = { 0, 1, 2, 2 },
|
||||
.entries = {
|
||||
{ 1, 0, _LOAD_LOCALS_r01 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 1, _LOAD_LOCALS_r12 },
|
||||
{ 3, 2, _LOAD_LOCALS_r23 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1578,7 +1578,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _LOAD_FROM_DICT_OR_DEREF_r11 },
|
||||
{ 1, 1, _LOAD_FROM_DICT_OR_DEREF_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1596,7 +1596,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _STORE_DEREF_r10 },
|
||||
{ 0, 1, _STORE_DEREF_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1633,7 +1633,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _BUILD_TEMPLATE_r21 },
|
||||
{ 1, 2, _BUILD_TEMPLATE_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1659,7 +1659,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _LIST_EXTEND_r10 },
|
||||
{ 0, 1, _LIST_EXTEND_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1668,7 +1668,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _SET_UPDATE_r10 },
|
||||
{ 0, 1, _SET_UPDATE_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1704,7 +1704,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _DICT_UPDATE_r10 },
|
||||
{ 0, 1, _DICT_UPDATE_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1713,7 +1713,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _DICT_MERGE_r10 },
|
||||
{ 0, 1, _DICT_MERGE_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1723,7 +1723,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _MAP_ADD_r20 },
|
||||
{ 0, 2, _MAP_ADD_r20 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1733,7 +1733,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _LOAD_SUPER_ATTR_ATTR_r31 },
|
||||
{ 1, 3, _LOAD_SUPER_ATTR_ATTR_r31 },
|
||||
},
|
||||
},
|
||||
[_LOAD_SUPER_ATTR_METHOD] = {
|
||||
@ -1742,14 +1742,14 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _LOAD_SUPER_ATTR_METHOD_r32 },
|
||||
{ 2, 3, _LOAD_SUPER_ATTR_METHOD_r32 },
|
||||
},
|
||||
},
|
||||
[_LOAD_ATTR] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _LOAD_ATTR_r10 },
|
||||
{ 0, 1, _LOAD_ATTR_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -1867,7 +1867,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _STORE_ATTR_WITH_HINT_r20 },
|
||||
{ 0, 2, _STORE_ATTR_WITH_HINT_r20 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1885,7 +1885,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _COMPARE_OP_r21 },
|
||||
{ 1, 2, _COMPARE_OP_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1930,7 +1930,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _CONTAINS_OP_r21 },
|
||||
{ 1, 2, _CONTAINS_OP_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1948,7 +1948,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _CONTAINS_OP_SET_r21 },
|
||||
{ 1, 2, _CONTAINS_OP_SET_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1957,7 +1957,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _CONTAINS_OP_DICT_r21 },
|
||||
{ 1, 2, _CONTAINS_OP_DICT_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1966,7 +1966,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _CHECK_EG_MATCH_r22 },
|
||||
{ 2, 2, _CHECK_EG_MATCH_r22 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1975,7 +1975,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _CHECK_EXC_MATCH_r22 },
|
||||
{ 2, 2, _CHECK_EXC_MATCH_r22 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1984,7 +1984,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _IMPORT_NAME_r21 },
|
||||
{ 1, 2, _IMPORT_NAME_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -1992,7 +1992,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _IMPORT_FROM_r12 },
|
||||
{ 2, 1, _IMPORT_FROM_r12 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2010,7 +2010,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _GET_LEN_r12 },
|
||||
{ 2, 1, _GET_LEN_r12 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2021,7 +2021,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _MATCH_CLASS_r31 },
|
||||
{ 1, 3, _MATCH_CLASS_r31 },
|
||||
},
|
||||
},
|
||||
[_MATCH_MAPPING] = {
|
||||
@ -2047,7 +2047,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 3, 0, _MATCH_KEYS_r23 },
|
||||
{ 3, 2, _MATCH_KEYS_r23 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -2055,7 +2055,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _GET_ITER_r12 },
|
||||
{ 2, 1, _GET_ITER_r12 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2064,7 +2064,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _GET_YIELD_FROM_ITER_r11 },
|
||||
{ 1, 1, _GET_YIELD_FROM_ITER_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2074,7 +2074,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 3, 0, _FOR_ITER_TIER_TWO_r23 },
|
||||
{ 3, 2, _FOR_ITER_TIER_TWO_r23 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -2101,7 +2101,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 3, 0, _ITER_NEXT_LIST_TIER_TWO_r23 },
|
||||
{ 3, 2, _ITER_NEXT_LIST_TIER_TWO_r23 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -2192,7 +2192,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 3, 0, _WITH_EXCEPT_START_r33 },
|
||||
{ 3, 3, _WITH_EXCEPT_START_r33 },
|
||||
},
|
||||
},
|
||||
[_PUSH_EXC_INFO] = {
|
||||
@ -2288,7 +2288,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
[_PY_FRAME_GENERAL] = {
|
||||
.best = { 0, 0, 0, 0 },
|
||||
.entries = {
|
||||
{ 1, 0, _PY_FRAME_GENERAL_r01 },
|
||||
{ 1, 1, _PY_FRAME_GENERAL_r01 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
@ -2525,7 +2525,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _CALL_STR_1_r32 },
|
||||
{ 2, 3, _CALL_STR_1_r32 },
|
||||
},
|
||||
},
|
||||
[_GUARD_CALLABLE_TUPLE_1] = {
|
||||
@ -2543,7 +2543,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 2, 0, _CALL_TUPLE_1_r32 },
|
||||
{ 2, 3, _CALL_TUPLE_1_r32 },
|
||||
},
|
||||
},
|
||||
[_CHECK_AND_ALLOCATE_OBJECT] = {
|
||||
@ -2558,7 +2558,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
[_CREATE_INIT_FRAME] = {
|
||||
.best = { 0, 0, 0, 0 },
|
||||
.entries = {
|
||||
{ 1, 0, _CREATE_INIT_FRAME_r01 },
|
||||
{ 1, 1, _CREATE_INIT_FRAME_r01 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
@ -2568,7 +2568,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 0, 0, _EXIT_INIT_CHECK_r10 },
|
||||
{ 0, 1, _EXIT_INIT_CHECK_r10 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2624,7 +2624,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 3, 0, _CALL_LEN_r33 },
|
||||
{ 3, 3, _CALL_LEN_r33 },
|
||||
},
|
||||
},
|
||||
[_GUARD_CALLABLE_ISINSTANCE] = {
|
||||
@ -2642,7 +2642,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _CALL_ISINSTANCE_r31 },
|
||||
{ 1, 3, _CALL_ISINSTANCE_r31 },
|
||||
},
|
||||
},
|
||||
[_GUARD_CALLABLE_LIST_APPEND] = {
|
||||
@ -2712,7 +2712,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _PY_FRAME_KW_r11 },
|
||||
{ 1, 1, _PY_FRAME_KW_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2757,7 +2757,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _CALL_KW_NON_PY_r11 },
|
||||
{ 1, 1, _CALL_KW_NON_PY_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2768,14 +2768,14 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 3, 0, _MAKE_CALLARGS_A_TUPLE_r33 },
|
||||
{ 3, 3, _MAKE_CALLARGS_A_TUPLE_r33 },
|
||||
},
|
||||
},
|
||||
[_MAKE_FUNCTION] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _MAKE_FUNCTION_r11 },
|
||||
{ 1, 1, _MAKE_FUNCTION_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2811,7 +2811,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _CONVERT_VALUE_r11 },
|
||||
{ 1, 1, _CONVERT_VALUE_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2820,7 +2820,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.best = { 1, 1, 1, 1 },
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _FORMAT_SIMPLE_r11 },
|
||||
{ 1, 1, _FORMAT_SIMPLE_r11 },
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
@ -2830,7 +2830,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _FORMAT_WITH_SPEC_r21 },
|
||||
{ 1, 2, _FORMAT_WITH_SPEC_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -2875,7 +2875,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
|
||||
.entries = {
|
||||
{ -1, -1, -1 },
|
||||
{ -1, -1, -1 },
|
||||
{ 1, 0, _BINARY_OP_r21 },
|
||||
{ 1, 2, _BINARY_OP_r21 },
|
||||
{ -1, -1, -1 },
|
||||
},
|
||||
},
|
||||
@ -3253,6 +3253,8 @@ const uint16_t _PyUop_Uncached[MAX_UOP_REGS_ID+1] = {
|
||||
[_RESUME_CHECK_r22] = _RESUME_CHECK,
|
||||
[_RESUME_CHECK_r33] = _RESUME_CHECK,
|
||||
[_LOAD_FAST_CHECK_r01] = _LOAD_FAST_CHECK,
|
||||
[_LOAD_FAST_CHECK_r12] = _LOAD_FAST_CHECK,
|
||||
[_LOAD_FAST_CHECK_r23] = _LOAD_FAST_CHECK,
|
||||
[_LOAD_FAST_0_r01] = _LOAD_FAST_0,
|
||||
[_LOAD_FAST_0_r12] = _LOAD_FAST_0,
|
||||
[_LOAD_FAST_0_r23] = _LOAD_FAST_0,
|
||||
@ -3526,6 +3528,8 @@ const uint16_t _PyUop_Uncached[MAX_UOP_REGS_ID+1] = {
|
||||
[_STORE_GLOBAL_r10] = _STORE_GLOBAL,
|
||||
[_DELETE_GLOBAL_r00] = _DELETE_GLOBAL,
|
||||
[_LOAD_LOCALS_r01] = _LOAD_LOCALS,
|
||||
[_LOAD_LOCALS_r12] = _LOAD_LOCALS,
|
||||
[_LOAD_LOCALS_r23] = _LOAD_LOCALS,
|
||||
[_LOAD_NAME_r01] = _LOAD_NAME,
|
||||
[_LOAD_GLOBAL_r00] = _LOAD_GLOBAL,
|
||||
[_PUSH_NULL_CONDITIONAL_r00] = _PUSH_NULL_CONDITIONAL,
|
||||
@ -4653,6 +4657,8 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = {
|
||||
[_LOAD_FAST_BORROW_7_r23] = "_LOAD_FAST_BORROW_7_r23",
|
||||
[_LOAD_FAST_CHECK] = "_LOAD_FAST_CHECK",
|
||||
[_LOAD_FAST_CHECK_r01] = "_LOAD_FAST_CHECK_r01",
|
||||
[_LOAD_FAST_CHECK_r12] = "_LOAD_FAST_CHECK_r12",
|
||||
[_LOAD_FAST_CHECK_r23] = "_LOAD_FAST_CHECK_r23",
|
||||
[_LOAD_FROM_DICT_OR_DEREF] = "_LOAD_FROM_DICT_OR_DEREF",
|
||||
[_LOAD_FROM_DICT_OR_DEREF_r11] = "_LOAD_FROM_DICT_OR_DEREF_r11",
|
||||
[_LOAD_GLOBAL] = "_LOAD_GLOBAL",
|
||||
@ -4663,6 +4669,8 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = {
|
||||
[_LOAD_GLOBAL_MODULE_r01] = "_LOAD_GLOBAL_MODULE_r01",
|
||||
[_LOAD_LOCALS] = "_LOAD_LOCALS",
|
||||
[_LOAD_LOCALS_r01] = "_LOAD_LOCALS_r01",
|
||||
[_LOAD_LOCALS_r12] = "_LOAD_LOCALS_r12",
|
||||
[_LOAD_LOCALS_r23] = "_LOAD_LOCALS_r23",
|
||||
[_LOAD_NAME] = "_LOAD_NAME",
|
||||
[_LOAD_NAME_r01] = "_LOAD_NAME_r01",
|
||||
[_LOAD_SMALL_INT] = "_LOAD_SMALL_INT",
|
||||
|
||||
@ -2812,6 +2812,28 @@ class TestUopsOptimization(unittest.TestCase):
|
||||
pool.submit(write, (1,))
|
||||
"""))
|
||||
|
||||
def test_handling_of_tos_cache_with_side_exits(self):
|
||||
# https://github.com/python/cpython/issues/142718
|
||||
class EvilAttr:
|
||||
def __init__(self, d):
|
||||
self.d = d
|
||||
|
||||
def __del__(self):
|
||||
try:
|
||||
del self.d['attr']
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
class Obj:
|
||||
pass
|
||||
|
||||
obj = Obj()
|
||||
obj.__dict__ = {}
|
||||
|
||||
for _ in range(TIER2_THRESHOLD+1):
|
||||
obj.attr = EvilAttr(obj.__dict__)
|
||||
|
||||
|
||||
def global_identity(x):
|
||||
return x
|
||||
|
||||
|
||||
@ -0,0 +1 @@
|
||||
JIT: Fix segfault caused by not flushing the stack to memory at side exits.
|
||||
655
Python/executor_cases.c.h
generated
655
Python/executor_cases.c.h
generated
File diff suppressed because it is too large
Load Diff
@ -1372,11 +1372,6 @@ def get_uop_cache_depths(uop: Uop) -> Iterator[tuple[int, int, int]]:
|
||||
if uop.name == "_ERROR_POP_N":
|
||||
yield 0, 0, 0
|
||||
return
|
||||
non_decref_escape = False
|
||||
for call in uop.properties.escaping_calls.values():
|
||||
if "DECREF" in call.call.text or "CLOSE" in call.call.text:
|
||||
continue
|
||||
non_decref_escape = True
|
||||
ideal_inputs = 0
|
||||
has_array = False
|
||||
for item in reversed(uop.stack.inputs):
|
||||
@ -1394,9 +1389,6 @@ def get_uop_cache_depths(uop: Uop) -> Iterator[tuple[int, int, int]]:
|
||||
ideal_inputs = MAX_CACHED_REGISTER
|
||||
if ideal_outputs > MAX_CACHED_REGISTER:
|
||||
ideal_outputs = MAX_CACHED_REGISTER
|
||||
if non_decref_escape:
|
||||
yield ideal_inputs, ideal_outputs, 0
|
||||
return
|
||||
at_end = uop.properties.sync_sp or uop.properties.side_exit_at_end
|
||||
exit_depth = ideal_outputs if at_end else ideal_inputs
|
||||
if uop.properties.escapes or uop.properties.sync_sp or has_array or is_large(uop):
|
||||
|
||||
@ -95,7 +95,9 @@ class Tier2Emitter(Emitter):
|
||||
next(tkn_iter) # Semi colon
|
||||
self.emit(") {\n")
|
||||
self.emit("UOP_STAT_INC(uopcode, miss);\n")
|
||||
self.emit(f"SET_CURRENT_CACHED_VALUES({self.exit_cache_depth});\n")
|
||||
storage = storage.copy()
|
||||
self.cache_items(storage.stack, self.exit_cache_depth, False)
|
||||
storage.stack.flush(self.out)
|
||||
self.emit("JUMP_TO_JUMP_TARGET();\n")
|
||||
self.emit("}\n")
|
||||
return not always_true(first_tkn)
|
||||
@ -151,7 +153,7 @@ class Tier2Emitter(Emitter):
|
||||
inst: Instruction | None,
|
||||
) -> bool:
|
||||
assert self.exit_cache_depth == 0, uop.name
|
||||
cache_items(self, storage.stack, self.exit_cache_depth, False)
|
||||
self.cache_items(storage.stack, self.exit_cache_depth, False)
|
||||
storage.flush(self.out)
|
||||
self.out.emit(tkn)
|
||||
lparen = next(tkn_iter)
|
||||
@ -181,31 +183,31 @@ class Tier2Emitter(Emitter):
|
||||
self.emit("UOP_STAT_INC(uopcode, miss);\n")
|
||||
storage = storage.copy()
|
||||
storage.clear_inputs("in AT_END_EXIT_IF")
|
||||
cache_items(self, storage.stack, self.exit_cache_depth, False)
|
||||
self.cache_items(storage.stack, self.exit_cache_depth, False)
|
||||
storage.flush(self.out)
|
||||
self.emit("JUMP_TO_JUMP_TARGET();\n")
|
||||
self.emit("}\n")
|
||||
return not always_true(first_tkn)
|
||||
|
||||
def cache_items(self, stack: Stack, cached_items: int, zero_regs: bool) -> None:
|
||||
self.out.start_line()
|
||||
i = cached_items
|
||||
while i > 0:
|
||||
self.out.start_line()
|
||||
item = StackItem(f"_tos_cache{i-1}", "", False, True)
|
||||
stack.pop(item, self.out)
|
||||
i -= 1
|
||||
if zero_regs:
|
||||
# TO DO -- For compilers that support it,
|
||||
# replace this with a "clobber" to tell
|
||||
# the compiler that these values are unused
|
||||
# without having to emit any code.
|
||||
for i in range(cached_items, MAX_CACHED_REGISTER):
|
||||
self.out.emit(f"_tos_cache{i} = PyStackRef_ZERO_BITS;\n")
|
||||
self.emit(f"SET_CURRENT_CACHED_VALUES({cached_items});\n")
|
||||
|
||||
def cache_items(emitter: Emitter, stack: Stack, cached_items: int, zero_regs: bool) -> None:
|
||||
emitter.out.start_line()
|
||||
i = cached_items
|
||||
while i > 0:
|
||||
emitter.out.start_line()
|
||||
item = StackItem(f"_tos_cache{i-1}", "", False, True)
|
||||
stack.pop(item, emitter.out)
|
||||
i -= 1
|
||||
if zero_regs:
|
||||
# TO DO -- For compilers that support it,
|
||||
# replace this with a "clobber" to tell
|
||||
# the compiler that these values are unused
|
||||
# without having to emit any code.
|
||||
for i in range(cached_items, MAX_CACHED_REGISTER):
|
||||
emitter.out.emit(f"_tos_cache{i} = PyStackRef_ZERO_BITS;\n")
|
||||
emitter.emit(f"SET_CURRENT_CACHED_VALUES({cached_items});\n")
|
||||
|
||||
def write_uop(uop: Uop, emitter: Emitter, stack: Stack, offset_strs: dict[str, tuple[str, str]], cached_items: int = 0) -> tuple[bool, Stack]:
|
||||
def write_uop(uop: Uop, emitter: Tier2Emitter, stack: Stack, offset_strs: dict[str, tuple[str, str]], cached_items: int = 0) -> tuple[bool, Stack]:
|
||||
locals: dict[str, Local] = {}
|
||||
zero_regs = is_large(uop) or uop.properties.escapes
|
||||
try:
|
||||
@ -233,7 +235,7 @@ def write_uop(uop: Uop, emitter: Emitter, stack: Stack, offset_strs: dict[str, t
|
||||
reachable, storage = emitter.emit_tokens(uop, storage, None, False)
|
||||
if reachable:
|
||||
storage.stack._print(emitter.out)
|
||||
cache_items(emitter, storage.stack, cached_items, zero_regs)
|
||||
emitter.cache_items(storage.stack, cached_items, zero_regs)
|
||||
storage.flush(emitter.out)
|
||||
if name_offset_pair:
|
||||
emitter.emit(f"#undef OFFSET_OF_{name_offset_pair[0]}\n")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user