GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — GH-132554: Fix tier2 `FOR_ITER` implementation and optimizations by markshannon · Pull Request #135137 · python/cpython Conversation
|
|
Can you check out the Windows JIT failures please? I'll review the PR after that. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| #endif | ||
|
|
||
| _PyStackRef _PyForIter_NextWithIndex(PyObject *seq, _PyStackRef index); | ||
| _PyStackRef |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
| _PyStackRef | |
| PyAPI_FUNC(_PyStackRef) |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| op(_GET_ITER, (iterable -- iter, index_or_null)) { | ||
| if (sym_matches_type(iterable, &PyTuple_Type) || sym_matches_type(iterable, &PyList_Type)) { | ||
| iter = iterable; | ||
| index_or_null = sym_new_type(ctx, &PyLong_Type); |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Hm, this is sort of weird. We don't have a symbol for "unboxed int" in the JIT, but it really doesn't feel correct to type this as int. Maybe leave as unknown and we can update our lattice with unboxed C types later? It's not like this information is being used yet, anyways.
| index_or_null = sym_new_type(ctx, &PyLong_Type); | |
| index_or_null = sym_new_unknown(ctx); |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| ERROR_NO_POP(); | ||
| } | ||
| next = PyStackRef_FromPyObjectSteal(next_o); | ||
| JUMPBY(oparg + 1); |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Can you add back the comment that this is skipping the END_FOR?
| JUMPBY(oparg + 1); | |
| // Jump forward by oparg, then skip the following END_FOR: | |
| JUMPBY(oparg + 1); |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| if (PyStackRef_IsError(item)) { | ||
| ERROR_NO_POP(); | ||
| } | ||
| JUMPBY(oparg + 1); |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
| JUMPBY(oparg + 1); | |
| // Jump forward by oparg, then skip the following END_FOR: | |
| JUMPBY(oparg + 1); |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| _PyErr_Clear(tstate); | ||
| } | ||
| else { | ||
| return PyStackRef_ERROR; |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
| return PyStackRef_ERROR; | |
| return PyStackRef_ERROR; |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Confirmed that this fixed the |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.