For all int-like typed variables, use int as field type and coerce

it during spill-unspill.
Coerce int to boolean, otherwise, VerifyError is thrown on android
Completely rewrite SpilledVariableFieldTypesAnalysis... again,
but this time use BasicInterpreter
This way, the analysis both does not use SourceInterpreter and
is in line with the rest on analyses.
This commit is contained in:
Ilmir Usmanov
2020-06-30 14:03:51 +02:00
parent e7f33ac051
commit 697c8637ee
12 changed files with 122 additions and 347 deletions
@@ -37,5 +37,5 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.Z\$0 : Z
// 1 PUTFIELD .*\.Z\$1 : Z
// 1 PUTFIELD .*\.I\$0 : I
// 1 PUTFIELD .*\.I\$1 : I
@@ -36,4 +36,4 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.B\$0 : B
// 1 PUTFIELD .*\.I\$0 : I
@@ -35,4 +35,4 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.Z\$0 : Z
// 1 PUTFIELD .*\.I\$0 : I
@@ -35,4 +35,4 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.B\$0 : B
// 1 PUTFIELD .*\.I\$0 : I
@@ -35,4 +35,4 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.Z\$0 : Z
// 1 PUTFIELD .*\.I\$0 : I
@@ -38,5 +38,5 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.B\$0 : B
// 1 PUTFIELD .*\.I\$0 : I
// 1 PUTFIELD .*\.I\$1 : I
@@ -81,8 +81,4 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.B\$0 : B
// 1 PUTFIELD .*\.C\$0 : C
// 1 PUTFIELD .*\.S\$0 : S
// 1 PUTFIELD .*\.Z\$0 : Z
// 1 PUTFIELD .*\.I\$0 : I
// 5 PUTFIELD .*\.I\$0 : I
@@ -85,8 +85,4 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.B\$0 : B
// 1 PUTFIELD .*\.C\$0 : C
// 1 PUTFIELD .*\.S\$0 : S
// 1 PUTFIELD .*\.Z\$0 : Z
// 1 PUTFIELD .*\.I\$0 : I
// 5 PUTFIELD .*\.I\$0 : I
@@ -71,8 +71,4 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.B\$0 : B
// 1 PUTFIELD .*\.C\$0 : C
// 1 PUTFIELD .*\.S\$0 : S
// 1 PUTFIELD .*\.Z\$0 : Z
// 1 PUTFIELD .*\.I\$0 : I
// 5 PUTFIELD .*\.I\$0 : I
@@ -61,8 +61,4 @@ fun box(): String {
return "OK"
}
// 1 PUTFIELD .*\.B\$0 : B
// 1 PUTFIELD .*\.C\$0 : C
// 1 PUTFIELD .*\.S\$0 : S
// 1 PUTFIELD .*\.Z\$0 : Z
// 1 PUTFIELD .*\.I\$0 : I
// 5 PUTFIELD .*\.I\$0 : I