@@ -1898,9 +1898,7 @@ dummy_func(
1898
1898
CHECK_EVAL_BREAKER ();
1899
1899
}
1900
1900
1901
- // stack effect: (__0 -- )
1902
- inst (POP_JUMP_IF_FALSE ) {
1903
- PyObject * cond = POP ();
1901
+ inst (POP_JUMP_IF_FALSE , (cond -- )) {
1904
1902
if (Py_IsTrue (cond )) {
1905
1903
_Py_DECREF_NO_DEALLOC (cond );
1906
1904
}
@@ -1911,19 +1909,16 @@ dummy_func(
1911
1909
else {
1912
1910
int err = PyObject_IsTrue (cond );
1913
1911
Py_DECREF (cond );
1914
- if (err > 0 )
1915
- ;
1916
- else if (err == 0 ) {
1912
+ if (err == 0 ) {
1917
1913
JUMPBY (oparg );
1918
1914
}
1919
- else
1920
- goto error ;
1915
+ else {
1916
+ ERROR_IF (err < 0 , error );
1917
+ }
1921
1918
}
1922
1919
}
1923
1920
1924
- // stack effect: (__0 -- )
1925
- inst (POP_JUMP_IF_TRUE ) {
1926
- PyObject * cond = POP ();
1921
+ inst (POP_JUMP_IF_TRUE , (cond -- )) {
1927
1922
if (Py_IsFalse (cond )) {
1928
1923
_Py_DECREF_NO_DEALLOC (cond );
1929
1924
}
@@ -1937,25 +1932,23 @@ dummy_func(
1937
1932
if (err > 0 ) {
1938
1933
JUMPBY (oparg );
1939
1934
}
1940
- else if (err == 0 )
1941
- ;
1942
- else
1943
- goto error ;
1935
+ else {
1936
+ ERROR_IF (err < 0 , error );
1937
+ }
1944
1938
}
1945
1939
}
1946
1940
1947
- // stack effect: (__0 -- )
1948
- inst (POP_JUMP_IF_NOT_NONE ) {
1949
- PyObject * value = POP ();
1941
+ inst (POP_JUMP_IF_NOT_NONE , (value -- )) {
1950
1942
if (!Py_IsNone (value )) {
1943
+ Py_DECREF (value );
1951
1944
JUMPBY (oparg );
1952
1945
}
1953
- Py_DECREF (value );
1946
+ else {
1947
+ _Py_DECREF_NO_DEALLOC (value );
1948
+ }
1954
1949
}
1955
1950
1956
- // stack effect: (__0 -- )
1957
- inst (POP_JUMP_IF_NONE ) {
1958
- PyObject * value = POP ();
1951
+ inst (POP_JUMP_IF_NONE , (value -- )) {
1959
1952
if (Py_IsNone (value )) {
1960
1953
_Py_DECREF_NO_DEALLOC (value );
1961
1954
JUMPBY (oparg );
@@ -1965,50 +1958,48 @@ dummy_func(
1965
1958
}
1966
1959
}
1967
1960
1968
- // error: JUMP_IF_FALSE_OR_POP stack effect depends on jump flag
1969
- inst (JUMP_IF_FALSE_OR_POP ) {
1970
- PyObject * cond = TOP ();
1961
+ inst (JUMP_IF_FALSE_OR_POP , (cond -- cond if (jump ))) {
1962
+ bool jump = false;
1971
1963
int err ;
1972
1964
if (Py_IsTrue (cond )) {
1973
- STACK_SHRINK (1 );
1974
1965
_Py_DECREF_NO_DEALLOC (cond );
1975
1966
}
1976
1967
else if (Py_IsFalse (cond )) {
1977
1968
JUMPBY (oparg );
1969
+ jump = true;
1978
1970
}
1979
1971
else {
1980
1972
err = PyObject_IsTrue (cond );
1981
1973
if (err > 0 ) {
1982
- STACK_SHRINK (1 );
1983
1974
Py_DECREF (cond );
1984
1975
}
1985
1976
else if (err == 0 ) {
1986
1977
JUMPBY (oparg );
1978
+ jump = true;
1987
1979
}
1988
1980
else {
1989
1981
goto error ;
1990
1982
}
1991
1983
}
1992
1984
}
1993
1985
1994
- // error: JUMP_IF_TRUE_OR_POP stack effect depends on jump flag
1995
- inst (JUMP_IF_TRUE_OR_POP ) {
1996
- PyObject * cond = TOP ();
1986
+ inst (JUMP_IF_TRUE_OR_POP , (cond -- cond if (jump ))) {
1987
+ bool jump = false;
1997
1988
int err ;
1998
1989
if (Py_IsFalse (cond )) {
1999
- STACK_SHRINK (1 );
2000
1990
_Py_DECREF_NO_DEALLOC (cond );
2001
1991
}
2002
1992
else if (Py_IsTrue (cond )) {
2003
1993
JUMPBY (oparg );
1994
+ jump = true;
2004
1995
}
2005
1996
else {
2006
1997
err = PyObject_IsTrue (cond );
2007
1998
if (err > 0 ) {
2008
1999
JUMPBY (oparg );
2000
+ jump = true;
2009
2001
}
2010
2002
else if (err == 0 ) {
2011
- STACK_SHRINK (1 );
2012
2003
Py_DECREF (cond );
2013
2004
}
2014
2005
else {
@@ -2321,22 +2312,16 @@ dummy_func(
2321
2312
ERROR_IF (res == NULL , error );
2322
2313
}
2323
2314
2324
- // stack effect: ( -- __0)
2325
- inst (PUSH_EXC_INFO ) {
2326
- PyObject * value = TOP ();
2327
-
2315
+ inst (PUSH_EXC_INFO , (new_exc -- prev_exc , new_exc )) {
2328
2316
_PyErr_StackItem * exc_info = tstate -> exc_info ;
2329
2317
if (exc_info -> exc_value != NULL ) {
2330
- SET_TOP ( exc_info -> exc_value ) ;
2318
+ prev_exc = exc_info -> exc_value ;
2331
2319
}
2332
2320
else {
2333
- SET_TOP ( Py_NewRef (Py_None ) );
2321
+ prev_exc = Py_NewRef (Py_None );
2334
2322
}
2335
-
2336
- PUSH (Py_NewRef (value ));
2337
- assert (PyExceptionInstance_Check (value ));
2338
- exc_info -> exc_value = value ;
2339
-
2323
+ assert (PyExceptionInstance_Check (new_exc ));
2324
+ exc_info -> exc_value = Py_NewRef (new_exc );
2340
2325
}
2341
2326
2342
2327
inst (LOAD_ATTR_METHOD_WITH_VALUES , (unused /1 , type_version /2 , keys_version /2 , descr /4 , self -- res2 if (oparg & 1 ), res )) {
0 commit comments