summaryrefslogtreecommitdiff
path: root/test/2002-virtual-structural-initializing/src/Main.java
Commit message (Collapse)AuthorAgeFilesLines
* Revert^4 "Allow structural redefinition on non-final classes."Alex Light2019-12-111-0/+21
| | | | | | | | | | | | | | This reverts commit 664999a12d6fc8a8ef5c0519b12ec1e8a51bb085. Fixed issues with GC and quickened instructions in parent CLs. Reason for revert: Fixed issues with GC CHECK fail and device SEGVs. Test: ./test.py --host Test: ./test.py --target Bug: 134162467 Bug: 144168550 Change-Id: Ibacddaf45beb72184f97d53d5d048bd442578658
* Revert "Revert^2 "Allow structural redefinition on non-final classes.""Nicolas Geoffray2019-12-031-21/+0
| | | | | | | | | | This reverts commit f1b809ce611e943f926fff97cefe0930226ffcc2. Reason for revert: Tests still fail Bug: 134162467 Bug: 144168550 Change-Id: Icdebc826b8630920b716afbfd6f338a29669fcc2
* Revert^2 "Allow structural redefinition on non-final classes."Alex Light2019-12-021-0/+21
| | | | | | | | | | | | | | | | | | | | | We were incorrectly racing with the rest of the runtime in a couple of places. First we would return an ObjPtr of a newly defined class after holding it over a suspend point. This could lead to DefineClass returning an obsolete class in some cases. We also failed to ensure the class-status was synchronized between the old and new classes during structural redefinition. This could lead to a class appearing to go backwards in status. This reverts commit 88b1c83080afcb2bfb6f781ded1c90fe8f9eab4d. Reason for revert: Fixed issues causing test failures. Test: ./test.py --host Bug: 134162467 Bug: 144168550 Change-Id: I4d0f7718490532f0ef14a9561b8e7000ef292b12
* Revert "Allow structural redefinition on non-final classes."Roland Levillain2019-11-261-21/+0
| | | | | | | | | | | This reverts commit c47040d31cbcd8cddd5fadb552b4f0f6c94b5bd0. Reason for revert: Breaks ART tests (see e.g. b/145197371). Bug: 145197371 Bug: 134162467 Bug: 144168550 Change-Id: Ia8e5788655057e380fc723a38900d26d69cda938
* Allow structural redefinition on non-final classes.Alex Light2019-11-261-0/+21
This adds support for structurally redefining non-final, non-finalizable classes. The only restriction is that one cannot redefine a class at the same time as any of its supertypes, if a structural redefinition is occurring. The structural redefinition may not remove any fields or methods, change the superclass or change the implemented interfaces. Adding new methods or fields, both static or non-static, public, private, protected, or package-private, is supported. Test: ./test.py --host Bug: 134162467 Bug: 144168550 Change-Id: I32e9e854b3e56270170b10e8f5aba9de8f6bfdfa