@@ -3132,7 +3132,7 @@ dummy_func(
3132
3132
res = PyObject_To_StackRef_Steal (res_o );
3133
3133
}
3134
3134
3135
- inst (WITH_EXCEPT_START , (exit_func : PyObject * , lasti , unused , val -- exit_func , lasti , unused , val , res : PyObject * )) {
3135
+ inst (WITH_EXCEPT_START , (exit_func , lasti , unused , val -- exit_func , lasti , unused , val , res : PyObject * )) {
3136
3136
/* At the top of the stack are 4 values:
3137
3137
- val: TOP = exc_info()
3138
3138
- unused: SECOND = previous exception
@@ -3144,6 +3144,7 @@ dummy_func(
3144
3144
PyObject * exc , * tb ;
3145
3145
3146
3146
PyObject * val_o = PyStackRef_To_PyObject_Borrow (val );
3147
+ PyObject * exit_func_o = PyStackRef_To_PyObject_Borrow (exit_func );
3147
3148
3148
3149
assert (val_o && PyExceptionInstance_Check (val_o ));
3149
3150
exc = PyExceptionInstance_Class (val_o );
@@ -3157,7 +3158,7 @@ dummy_func(
3157
3158
assert (PyLong_Check (PyStackRef_To_PyObject_Borrow (lasti )));
3158
3159
(void )lasti ; // Shut up compiler warning if asserts are off
3159
3160
_PyStackRef stack [4 ] = {Py_STACKREF_NULL , PyObject_To_StackRef_Steal (exc ), val , PyObject_To_StackRef_Steal (tb )};
3160
- res = PyObject_Vectorcall_StackRef (PyStackRef_To_PyObject_Borrow ( exit_func ) , stack + 1 ,
3161
+ res = PyObject_Vectorcall_StackRef (exit_func_o , stack + 1 ,
3161
3162
3 | PY_VECTORCALL_ARGUMENTS_OFFSET , NULL );
3162
3163
ERROR_IF (res == NULL , error );
3163
3164
}
@@ -4526,29 +4527,37 @@ dummy_func(
4526
4527
///////// Tier-2 only opcodes /////////
4527
4528
4528
4529
op (_GUARD_IS_TRUE_POP , (flag -- )) {
4530
+ PyObject * flag_o = PyStackRef_To_PyObject_Borrow (flag );
4531
+
4529
4532
SYNC_SP ();
4530
- EXIT_IF (!Py_IsTrue (flag ));
4531
- assert (Py_IsTrue (flag ));
4533
+ EXIT_IF (!Py_IsTrue (flag_o ));
4534
+ assert (Py_IsTrue (flag_o ));
4532
4535
}
4533
4536
4534
4537
op (_GUARD_IS_FALSE_POP , (flag -- )) {
4538
+ PyObject * flag_o = PyStackRef_To_PyObject_Borrow (flag );
4539
+
4535
4540
SYNC_SP ();
4536
- EXIT_IF (!Py_IsFalse (flag ));
4537
- assert (Py_IsFalse (flag ));
4541
+ EXIT_IF (!Py_IsFalse (flag_o ));
4542
+ assert (Py_IsFalse (flag_o ));
4538
4543
}
4539
4544
4540
4545
op (_GUARD_IS_NONE_POP , (val -- )) {
4546
+ PyObject * val_o = PyStackRef_To_PyObject_Borrow (val );
4547
+
4541
4548
SYNC_SP ();
4542
- if (!Py_IsNone (val )) {
4543
- PyStackRef_DECREF (val_stackref );
4549
+ if (!Py_IsNone (val_o )) {
4550
+ PyStackRef_DECREF (val );
4544
4551
EXIT_IF (1 );
4545
4552
}
4546
4553
}
4547
4554
4548
4555
op (_GUARD_IS_NOT_NONE_POP , (val -- )) {
4556
+ PyObject * val_o = PyStackRef_To_PyObject_Borrow (val );
4557
+
4549
4558
SYNC_SP ();
4550
- EXIT_IF (Py_IsNone (val ));
4551
- PyStackRef_DECREF (val_stackref );
4559
+ EXIT_IF (Py_IsNone (val_o ));
4560
+ PyStackRef_DECREF (val );
4552
4561
}
4553
4562
4554
4563
op (_JUMP_TO_TOP , (-- )) {
@@ -4585,25 +4594,25 @@ dummy_func(
4585
4594
}
4586
4595
4587
4596
tier2 pure op (_LOAD_CONST_INLINE , (ptr /4 -- value )) {
4588
- value = Py_NewRef (ptr );
4597
+ value = PyObject_To_StackRef_New (ptr );
4589
4598
}
4590
4599
4591
4600
tier2 pure op (_LOAD_CONST_INLINE_BORROW , (ptr /4 -- value )) {
4592
- value = ptr ;
4601
+ value = PyObject_To_StackRef_Borrow ( ptr ) ;
4593
4602
}
4594
4603
4595
4604
tier2 pure op (_POP_TOP_LOAD_CONST_INLINE_BORROW , (ptr /4 , pop -- value )) {
4596
4605
DECREF_INPUTS ();
4597
- value = ptr ;
4606
+ value = PyObject_To_StackRef_Borrow ( ptr ) ;
4598
4607
}
4599
4608
4600
4609
tier2 pure op (_LOAD_CONST_INLINE_WITH_NULL , (ptr /4 -- value , null )) {
4601
- value = Py_NewRef (ptr );
4610
+ value = PyObject_To_StackRef_New (ptr );
4602
4611
null = Py_STACKREF_NULL ;
4603
4612
}
4604
4613
4605
4614
tier2 pure op (_LOAD_CONST_INLINE_BORROW_WITH_NULL , (ptr /4 -- value , null )) {
4606
- value = ptr ;
4615
+ value = PyObject_To_StackRef_Borrow ( ptr ) ;
4607
4616
null = Py_STACKREF_NULL ;
4608
4617
}
4609
4618
@@ -4614,7 +4623,7 @@ dummy_func(
4614
4623
4615
4624
/* Internal -- for testing executors */
4616
4625
op (_INTERNAL_INCREMENT_OPT_COUNTER , (opt -- )) {
4617
- _PyCounterOptimizerObject * exe = (_PyCounterOptimizerObject * )opt ;
4626
+ _PyCounterOptimizerObject * exe = (_PyCounterOptimizerObject * )PyStackRef_To_PyObject_Borrow ( opt ) ;
4618
4627
exe -> count ++ ;
4619
4628
}
4620
4629
0 commit comments