Skip to content

Commit d96441a

Browse files
author
Adam Hrbac
committed
[GR-47182] Implement basic jumps
PullRequest: graalpython/2892
2 parents 524fc93 + 72babe6 commit d96441a

File tree

12 files changed

+528
-58
lines changed

12 files changed

+528
-58
lines changed

graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_sys_settrace.txt

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,72 @@
1+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_across_async_with
2+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_across_with
3+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backward_over_async_listcomp
4+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backward_over_async_listcomp_v2
5+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backward_over_listcomp
6+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backward_over_listcomp_v2
7+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backwards_into_try_except_block
8+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backwards_into_try_finally_block
9+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backwards_into_while_block
10+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backwards_out_of_async_with_block
11+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backwards_out_of_try_except_block
12+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backwards_out_of_try_finally_block
13+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_backwards_out_of_with_block
14+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_between_async_with_blocks
15+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_between_except_blocks
16+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_between_except_blocks_2
17+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_between_with_blocks
18+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_extended_args_for_iter
19+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_extended_args_unpack_ex_simple
20+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_extended_args_unpack_ex_tricky
21+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_forward_over_async_listcomp
22+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_forward_over_listcomp
23+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_forwards_into_try_except_block
24+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_forwards_into_try_finally_block
25+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_forwards_into_while_block
26+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_forwards_out_of_async_with_block
27+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_forwards_out_of_try_except_block
28+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_forwards_out_of_try_finally_block
29+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_forwards_out_of_with_block
30+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_is_none_backwards
31+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_is_none_forwards
32+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_is_not_none_backwards
33+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_is_not_none_forwards
34+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_or_pop
35+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_async_for_block_backwards
36+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_async_for_block_forwards
37+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_async_with_assignment
38+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_async_with_block_within_for_block
39+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_async_with_block_within_with_block
40+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_bare_except_block
41+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_block_backwards
42+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_block_forwards
43+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_complex_nested_blocks
44+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_qualified_except_block
45+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_with_assignment
46+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_with_block_within_for_block
47+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_out_of_with_block_within_with_block
48+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_over_async_for_block_before_else
49+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_over_break_in_try_finally_block
50+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_over_for_block_before_else
51+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_over_return_in_try_finally_block
52+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_over_try_except
53+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_simple_backwards
54+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_simple_forwards
55+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_to_codeless_line
56+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_to_firstlineno
57+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_to_same_line
58+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_with_null_on_stack_load_global
59+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_with_null_on_stack_push_null
60+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_jump_within_except_block
61+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_large_function
62+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_no_jump_backwards_into_for_block
63+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_no_jump_forwards_into_async_for_block
64+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_no_jump_forwards_into_for_block
65+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_no_jump_into_async_for_block_before_else
66+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_no_jump_into_for_block_before_else
67+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_no_jump_over_return_out_of_finally_block
68+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_no_jump_too_far_backwards
69+
*graalpython.lib-python.3.test.test_sys_settrace.JumpTestCase.test_no_jump_too_far_forwards
170
*graalpython.lib-python.3.test.test_sys_settrace.RaisingTraceFuncTestCase.test_call
271
*graalpython.lib-python.3.test.test_sys_settrace.RaisingTraceFuncTestCase.test_exception
372
*graalpython.lib-python.3.test.test_sys_settrace.RaisingTraceFuncTestCase.test_exception_arguments

graalpython/com.oracle.graal.python.test/testData/goldenFiles/CompilerTests/testCoroutine.co

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Flags: CO_COROUTINE
1313
2:4 - 2:11 >> 6 YIELD_VALUE
1414
2:4 - 2:11 7 RESUME_YIELD
1515
2:4 - 2:11 8 JUMP_BACKWARD 4 (to 4)
16-
2:4 - 2:11 10 THROW 4 (exc handler 7 - 10; stack: 1)
16+
2:4 - 2:11 10 THROW 4 (to 14) (exc handler 7 - 10; stack: 1)
1717
2:4 - 2:11 12 JUMP_BACKWARD 6 (to 6)
1818
2:4 - 2:11 >> 14 POP_TOP
1919
2:4 - 2:11 15 LOAD_NONE

graalpython/com.oracle.graal.python.test/testData/goldenFiles/CompilerTests/testReturnFromAsyncWith.co

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Flags: CO_COROUTINE
1414
2:2 - 3:11 >> 7 YIELD_VALUE
1515
2:2 - 3:11 8 RESUME_YIELD
1616
2:2 - 3:11 9 JUMP_BACKWARD 4 (to 5)
17-
2:2 - 3:11 11 THROW 4 (exc handler 8 - 11; stack: 3)
17+
2:2 - 3:11 11 THROW 4 (to 15) (exc handler 8 - 11; stack: 3)
1818
2:2 - 3:11 13 JUMP_BACKWARD 6 (to 7)
1919
2:2 - 3:11 >> 15 POP_TOP
2020
2:2 - 3:11 16 LOAD_NONE
@@ -25,7 +25,7 @@ Flags: CO_COROUTINE
2525
2:2 - 3:11 >> 22 YIELD_VALUE
2626
2:2 - 3:11 23 RESUME_YIELD
2727
2:2 - 3:11 24 JUMP_BACKWARD 4 (to 20)
28-
2:2 - 3:11 26 THROW 4 (exc handler 23 - 26; stack: 2)
28+
2:2 - 3:11 26 THROW 4 (to 30) (exc handler 23 - 26; stack: 2)
2929
2:2 - 3:11 28 JUMP_BACKWARD 6 (to 22)
3030
2:2 - 3:11 >> 30 EXIT_AWITH
3131
2:2 - 3:11 31 LOAD_NONE
@@ -38,7 +38,7 @@ Flags: CO_COROUTINE
3838
2:2 - 3:11 >> 39 YIELD_VALUE
3939
2:2 - 3:11 40 RESUME_YIELD
4040
2:2 - 3:11 41 JUMP_BACKWARD 4 (to 37)
41-
2:2 - 3:11 43 THROW 4 (exc handler 40 - 43; stack: 2)
41+
2:2 - 3:11 43 THROW 4 (to 47) (exc handler 40 - 43; stack: 2)
4242
2:2 - 3:11 45 JUMP_BACKWARD 6 (to 39)
4343
2:2 - 3:11 >> 47 EXIT_AWITH
4444
2:2 - 3:11 48 LOAD_NONE

graalpython/com.oracle.graal.python.test/testData/goldenFiles/CompilerTests/testReturnFromAsyncWithT.co

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Flags: CO_COROUTINE
1414
2:2 - 4:12 >> 7 YIELD_VALUE
1515
2:2 - 4:12 8 RESUME_YIELD
1616
2:2 - 4:12 9 JUMP_BACKWARD 4 (to 5)
17-
2:2 - 4:12 11 THROW 4 (exc handler 8 - 11; stack: 3)
17+
2:2 - 4:12 11 THROW 4 (to 15) (exc handler 8 - 11; stack: 3)
1818
2:2 - 4:12 13 JUMP_BACKWARD 6 (to 7)
1919
2:2 - 4:12 >> 15 POP_TOP
2020
3:15 - 3:16 16 LOAD_GLOBAL 1 (b)
@@ -25,7 +25,7 @@ Flags: CO_COROUTINE
2525
3:4 - 4:12 >> 23 YIELD_VALUE
2626
3:4 - 4:12 24 RESUME_YIELD
2727
3:4 - 4:12 25 JUMP_BACKWARD 4 (to 21)
28-
3:4 - 4:12 27 THROW 4 (exc handler 24 - 27; stack: 5)
28+
3:4 - 4:12 27 THROW 4 (to 31) (exc handler 24 - 27; stack: 5)
2929
3:4 - 4:12 29 JUMP_BACKWARD 6 (to 23)
3030
3:4 - 4:12 >> 31 POP_TOP
3131
3:4 - 4:12 32 LOAD_NONE
@@ -36,7 +36,7 @@ Flags: CO_COROUTINE
3636
3:4 - 4:12 >> 38 YIELD_VALUE
3737
3:4 - 4:12 39 RESUME_YIELD
3838
3:4 - 4:12 40 JUMP_BACKWARD 4 (to 36)
39-
3:4 - 4:12 42 THROW 4 (exc handler 39 - 42; stack: 4)
39+
3:4 - 4:12 42 THROW 4 (to 46) (exc handler 39 - 42; stack: 4)
4040
3:4 - 4:12 44 JUMP_BACKWARD 6 (to 38)
4141
3:4 - 4:12 >> 46 EXIT_AWITH
4242
2:2 - 4:12 47 LOAD_NONE
@@ -47,7 +47,7 @@ Flags: CO_COROUTINE
4747
2:2 - 4:12 >> 53 YIELD_VALUE
4848
2:2 - 4:12 54 RESUME_YIELD
4949
2:2 - 4:12 55 JUMP_BACKWARD 4 (to 51)
50-
2:2 - 4:12 57 THROW 4 (exc handler 54 - 57; stack: 2)
50+
2:2 - 4:12 57 THROW 4 (to 61) (exc handler 54 - 57; stack: 2)
5151
2:2 - 4:12 59 JUMP_BACKWARD 6 (to 53)
5252
2:2 - 4:12 >> 61 EXIT_AWITH
5353
2:2 - 4:12 62 LOAD_NONE
@@ -60,7 +60,7 @@ Flags: CO_COROUTINE
6060
3:4 - 4:12 >> 70 YIELD_VALUE
6161
3:4 - 4:12 71 RESUME_YIELD
6262
3:4 - 4:12 72 JUMP_BACKWARD 4 (to 68)
63-
3:4 - 4:12 74 THROW 4 (exc handler 71 - 74; stack: 4)
63+
3:4 - 4:12 74 THROW 4 (to 78) (exc handler 71 - 74; stack: 4)
6464
3:4 - 4:12 76 JUMP_BACKWARD 6 (to 70)
6565
3:4 - 4:12 >> 78 EXIT_AWITH
6666
3:4 - 4:12 79 LOAD_NONE
@@ -71,7 +71,7 @@ Flags: CO_COROUTINE
7171
2:2 - 4:12 >> 85 YIELD_VALUE
7272
2:2 - 4:12 86 RESUME_YIELD
7373
2:2 - 4:12 87 JUMP_BACKWARD 4 (to 83)
74-
2:2 - 4:12 89 THROW 4 (exc handler 86 - 89; stack: 2)
74+
2:2 - 4:12 89 THROW 4 (to 93) (exc handler 86 - 89; stack: 2)
7575
2:2 - 4:12 91 JUMP_BACKWARD 6 (to 85)
7676
2:2 - 4:12 >> 93 EXIT_AWITH
7777
2:2 - 4:12 94 LOAD_NONE

graalpython/com.oracle.graal.python.test/testData/goldenFiles/CompilerTests/testYieldFrom.co

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Flags: CO_GENERATOR
1313
2:4 - 2:16 >> 6 YIELD_VALUE
1414
2:4 - 2:16 7 RESUME_YIELD
1515
2:4 - 2:16 8 JUMP_BACKWARD 4 (to 4)
16-
2:4 - 2:16 10 THROW 4 (exc handler 7 - 10; stack: 1)
16+
2:4 - 2:16 10 THROW 4 (to 14) (exc handler 7 - 10; stack: 1)
1717
2:4 - 2:16 12 JUMP_BACKWARD 6 (to 6)
1818
2:4 - 2:16 >> 14 POP_TOP
1919
2:4 - 2:16 15 LOAD_NONE

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFrameBuiltins.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -71,9 +71,9 @@ static Object get(PFrame frame,
7171
@CApiBuiltin(ret = Int, args = {PyFrameObject}, call = Direct)
7272
abstract static class PyFrame_GetLineNumber extends CApiUnaryBuiltinNode {
7373
@Specialization
74-
static int get(PFrame frame,
75-
@Cached FrameBuiltins.GetLinenoNode getLinenoNode) {
76-
return getLinenoNode.executeInt(null, frame);
74+
static int get(PFrame frame) {
75+
// do not sync location here since we have no VirtualFrame
76+
return frame.getLine();
7777
}
7878
}
7979

0 commit comments

Comments
 (0)