[Python-checkins] GH-98831: Elaborate some cases_generator tests (#101299)
gvanrossum
webhook-mailer at python.org
Wed Jan 25 11:55:53 EST 2023
https://github.com/python/cpython/commit/395871e511d6d9634399598cae8f0c35fe72d79b
commit: 395871e511d6d9634399598cae8f0c35fe72d79b
branch: main
author: Guido van Rossum <guido at python.org>
committer: gvanrossum <gvanrossum at gmail.com>
date: 2023-01-25T08:55:46-08:00
summary:
GH-98831: Elaborate some cases_generator tests (#101299)
* Make macro test more elaborate
* Add test for 'register inst()'
files:
M Tools/cases_generator/test_generator.py
diff --git a/Tools/cases_generator/test_generator.py b/Tools/cases_generator/test_generator.py
index c59aae878cfa..cf58e6aaf2b3 100644
--- a/Tools/cases_generator/test_generator.py
+++ b/Tools/cases_generator/test_generator.py
@@ -333,20 +333,21 @@ def test_super_instruction():
def test_macro_instruction():
input = """
- inst(OP1, (counter/1, arg --)) {
- op1();
+ inst(OP1, (counter/1, arg1 -- interim)) {
+ interim = op1(arg1);
}
- op(OP2, (extra/2, arg --)) {
- op2();
+ op(OP2, (extra/2, arg2, interim -- res)) {
+ res = op2(arg2, interim);
}
macro(OP) = OP1 + cache/2 + OP2;
"""
output = """
TARGET(OP1) {
- PyObject *arg = PEEK(1);
+ PyObject *arg1 = PEEK(1);
+ PyObject *interim;
uint16_t counter = read_u16(&next_instr[0].cache);
- op1();
- STACK_SHRINK(1);
+ interim = op1(arg1);
+ POKE(1, interim);
JUMPBY(1);
DISPATCH();
}
@@ -355,17 +356,24 @@ def test_macro_instruction():
PyObject *_tmp_1 = PEEK(1);
PyObject *_tmp_2 = PEEK(2);
{
- PyObject *arg = _tmp_1;
- uint16_t counter = read_u16(&next_instr[0].cache);
- op1();
+ PyObject *arg1 = _tmp_1;
+ PyObject *interim;
+ uint16_t counter = re
+ ad_u16(&next_instr[0].cache);
+ interim = op1(arg1);
+ _tmp_1 = interim;
}
{
- PyObject *arg = _tmp_2;
+ PyObject *interim = _tmp_1;
+ PyObject *arg2 = _tmp_2;
+ PyObject *res;
uint32_t extra = read_u32(&next_instr[3].cache);
- op2();
+ res = op2(arg2, interim);
+ _tmp_2 = res;
}
JUMPBY(5);
- STACK_SHRINK(2);
+ STACK_SHRINK(1);
+ POKE(1, _tmp_2);
DISPATCH();
}
"""
@@ -448,3 +456,23 @@ def test_array_error_if():
}
"""
run_cases_test(input, output)
+
+def test_register():
+ input = """
+ register inst(OP, (counter/1, left, right -- result)) {
+ result = op(left, right);
+ }
+ """
+ output = """
+ TARGET(OP) {
+ PyObject *left = REG(oparg1);
+ PyObject *right = REG(oparg2);
+ PyObject *result;
+ uint16_t counter = read_u16(&next_instr[0].cache);
+ result = op(left, right);
+ Py_XSETREF(REG(oparg3), result);
+ JUMPBY(1);
+ DISPATCH();
+ }
+ """
+ run_cases_test(input, output)
More information about the Python-checkins
mailing list