Skip to content

Commit 5d3201f

Browse files
authored
GH-123040: Specialize shadowed LOAD_ATTR. (GH-123219)
1 parent 90b6d0e commit 5d3201f

File tree

7 files changed

+334
-201
lines changed

7 files changed

+334
-201
lines changed

Include/internal/pycore_opcode_metadata.h

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Include/opcode_ids.h

Lines changed: 32 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Lib/_opcode_metadata.py

Lines changed: 33 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/bytecodes.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1936,6 +1936,7 @@ dummy_func(
19361936
LOAD_ATTR_WITH_HINT,
19371937
LOAD_ATTR_SLOT,
19381938
LOAD_ATTR_CLASS,
1939+
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK,
19391940
LOAD_ATTR_PROPERTY,
19401941
LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN,
19411942
LOAD_ATTR_METHOD_WITH_VALUES,
@@ -2119,7 +2120,6 @@ dummy_func(
21192120
EXIT_IF(!PyType_Check(owner_o));
21202121
assert(type_version != 0);
21212122
EXIT_IF(((PyTypeObject *)owner_o)->tp_version_tag != type_version);
2122-
21232123
}
21242124

21252125
split op(_LOAD_ATTR_CLASS, (descr/4, owner -- attr, null if (oparg & 1))) {
@@ -2136,6 +2136,12 @@ dummy_func(
21362136
unused/2 +
21372137
_LOAD_ATTR_CLASS;
21382138

2139+
macro(LOAD_ATTR_CLASS_WITH_METACLASS_CHECK) =
2140+
unused/1 +
2141+
_CHECK_ATTR_CLASS +
2142+
_GUARD_TYPE_VERSION +
2143+
_LOAD_ATTR_CLASS;
2144+
21392145
op(_LOAD_ATTR_PROPERTY_FRAME, (fget/4, owner -- new_frame: _PyInterpreterFrame *)) {
21402146
assert((oparg & 1) == 0);
21412147
assert(Py_IS_TYPE(fget, &PyFunction_Type));

Python/generated_cases.c.h

Lines changed: 41 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/opcode_targets.h

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)