Skip to content

Commit 21fbfeb

Browse files
committed
[GR-70795] Fix PE-only unboxed locals optimization
PullRequest: graalpython/4056
2 parents 5d6d12a + 632a879 commit 21fbfeb

File tree

4 files changed

+184
-99
lines changed

4 files changed

+184
-99
lines changed

graalpython/com.oracle.graal.python.test/src/tests/unittest_tags_bytecode_dsl/test_int.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
!test.test_int.IntStrDigitLimitsTests.test_denial_of_service_prevented_int_to_str @ linux-x86_64
2-
test.test_int.IntStrDigitLimitsTests.test_denial_of_service_prevented_str_to_int @ linux-x86_64
2+
!test.test_int.IntStrDigitLimitsTests.test_denial_of_service_prevented_str_to_int @ linux-x86_64
33
test.test_int.IntStrDigitLimitsTests.test_disabled_limit @ linux-x86_64
44
test.test_int.IntStrDigitLimitsTests.test_int_from_other_bases @ linux-x86_64
55
test.test_int.IntStrDigitLimitsTests.test_max_str_digits @ linux-x86_64
@@ -8,7 +8,7 @@ test.test_int.IntStrDigitLimitsTests.test_power_of_two_bases_unlimited @ linux-x
88
test.test_int.IntStrDigitLimitsTests.test_sign_not_counted @ linux-x86_64
99
test.test_int.IntStrDigitLimitsTests.test_underscores_ignored @ linux-x86_64
1010
!test.test_int.IntSubclassStrDigitLimitsTests.test_denial_of_service_prevented_int_to_str @ linux-x86_64
11-
test.test_int.IntSubclassStrDigitLimitsTests.test_denial_of_service_prevented_str_to_int @ linux-x86_64
11+
!test.test_int.IntSubclassStrDigitLimitsTests.test_denial_of_service_prevented_str_to_int @ linux-x86_64
1212
test.test_int.IntSubclassStrDigitLimitsTests.test_disabled_limit @ linux-x86_64
1313
test.test_int.IntSubclassStrDigitLimitsTests.test_int_from_other_bases @ linux-x86_64
1414
test.test_int.IntSubclassStrDigitLimitsTests.test_max_str_digits @ linux-x86_64

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/compiler/CompilationUnit.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ public BytecodeCodeUnit assemble() {
335335
for (int j = 0; j < stores.size(); j++) {
336336
generalizeVarsValues[generalizeVarsIndex++] = stores.get(j).bodyBci();
337337
}
338-
if (boxingMetric[i] <= 0) {
338+
if (boxingMetric[i] < 0) {
339339
shouldUnboxVariable[i] = 0;
340340
}
341341
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/compiler/OpCodes.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,12 +852,16 @@ public enum OpCodes {
852852
LOAD_FAST_O(LOAD_FAST, 0, QuickeningTypes.OBJECT),
853853
LOAD_FAST_ADAPTIVE_O(LOAD_FAST, 0, QuickeningTypes.OBJECT),
854854
LOAD_FAST_I_BOX(LOAD_FAST, 0, QuickeningTypes.OBJECT),
855+
LOAD_FAST_BOXED_I(LOAD_FAST, 0, QuickeningTypes.OBJECT),
855856
LOAD_FAST_I(LOAD_FAST, 0, QuickeningTypes.INT, LOAD_FAST_I_BOX),
856857
LOAD_FAST_L_BOX(LOAD_FAST, 0, QuickeningTypes.OBJECT),
858+
LOAD_FAST_BOXED_L(LOAD_FAST, 0, QuickeningTypes.OBJECT),
857859
LOAD_FAST_L(LOAD_FAST, 0, QuickeningTypes.LONG, LOAD_FAST_L_BOX),
858860
LOAD_FAST_D_BOX(LOAD_FAST, 0, QuickeningTypes.OBJECT),
861+
LOAD_FAST_BOXED_D(LOAD_FAST, 0, QuickeningTypes.OBJECT),
859862
LOAD_FAST_D(LOAD_FAST, 0, QuickeningTypes.DOUBLE, LOAD_FAST_D_BOX),
860863
LOAD_FAST_B_BOX(LOAD_FAST, 0, QuickeningTypes.OBJECT),
864+
LOAD_FAST_BOXED_B(LOAD_FAST, 0, QuickeningTypes.OBJECT),
861865
LOAD_FAST_B(LOAD_FAST, 0, QuickeningTypes.BOOLEAN, LOAD_FAST_B_BOX),
862866
STORE_FAST_O(STORE_FAST, QuickeningTypes.OBJECT, 0),
863867
STORE_FAST_UNBOX_I(STORE_FAST, QuickeningTypes.OBJECT, 0),

0 commit comments

Comments
 (0)