@@ -2947,7 +2947,9 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
29472947
29482948 TARGET (LOAD_GLOBAL ) {
29492949 PREDICTED (LOAD_GLOBAL );
2950- PyObject * name = GETITEM (names , oparg );
2950+ int push_null = oparg & 1 ;
2951+ PEEK (0 ) = NULL ;
2952+ PyObject * name = GETITEM (names , oparg >>1 );
29512953 PyObject * v ;
29522954 if (PyDict_CheckExact (GLOBALS ())
29532955 && PyDict_CheckExact (BUILTINS ()))
@@ -2970,7 +2972,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
29702972 /* Slow-path if globals or builtins is not a dict */
29712973
29722974 /* namespace 1: globals */
2973- name = GETITEM (names , oparg );
29742975 v = PyObject_GetItem (GLOBALS (), name );
29752976 if (v == NULL ) {
29762977 if (!_PyErr_ExceptionMatches (tstate , PyExc_KeyError )) {
@@ -2992,6 +2993,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
29922993 }
29932994 /* Skip over inline cache */
29942995 JUMPBY (INLINE_CACHE_ENTRIES_LOAD_GLOBAL );
2996+ STACK_GROW (push_null );
29952997 PUSH (v );
29962998 DISPATCH ();
29972999 }
@@ -3000,7 +3002,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
30003002 assert (cframe .use_tracing == 0 );
30013003 _PyLoadGlobalCache * cache = (_PyLoadGlobalCache * )next_instr ;
30023004 if (cache -> counter == 0 ) {
3003- PyObject * name = GETITEM (names , oparg );
3005+ PyObject * name = GETITEM (names , oparg >> 1 );
30043006 next_instr -- ;
30053007 if (_Py_Specialize_LoadGlobal (GLOBALS (), BUILTINS (), next_instr , name ) < 0 ) {
30063008 goto error ;
@@ -3025,10 +3027,13 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
30253027 PyDictUnicodeEntry * entries = DK_UNICODE_ENTRIES (dict -> ma_keys );
30263028 PyObject * res = entries [cache -> index ].me_value ;
30273029 DEOPT_IF (res == NULL , LOAD_GLOBAL );
3030+ int push_null = oparg & 1 ;
3031+ PEEK (0 ) = NULL ;
30283032 JUMPBY (INLINE_CACHE_ENTRIES_LOAD_GLOBAL );
30293033 STAT_INC (LOAD_GLOBAL , hit );
3034+ STACK_GROW (push_null + 1 );
30303035 Py_INCREF (res );
3031- PUSH (res );
3036+ SET_TOP (res );
30323037 NOTRACE_DISPATCH ();
30333038 }
30343039
@@ -3047,10 +3052,13 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
30473052 PyDictUnicodeEntry * entries = DK_UNICODE_ENTRIES (bdict -> ma_keys );
30483053 PyObject * res = entries [cache -> index ].me_value ;
30493054 DEOPT_IF (res == NULL , LOAD_GLOBAL );
3055+ int push_null = oparg & 1 ;
3056+ PEEK (0 ) = NULL ;
30503057 JUMPBY (INLINE_CACHE_ENTRIES_LOAD_GLOBAL );
30513058 STAT_INC (LOAD_GLOBAL , hit );
3059+ STACK_GROW (push_null + 1 );
30523060 Py_INCREF (res );
3053- PUSH (res );
3061+ SET_TOP (res );
30543062 NOTRACE_DISPATCH ();
30553063 }
30563064
0 commit comments