Automatic Inference of Reference-Count Invariants
ABSTRACT While we know how to eciently collect short-lived garbage, collecting long-lived garbage usually requires expensive tracing traversals. This paper suggests a static analysis technique that can identify program points that make objects unreachable, allowing automatic insertion of explicit deallocation functions.
-
Citations (0)
-
Cited In (0)
Page 1
Automatic Inference of Reference-Count Invariants
David Detlefs
Sun Microsystems
1 Network Drive, Burlington, MA 01803
david.detlefs@sun.com
ABSTRACT
?????????????????Æ?????????????????????????????????
???????????????????? ????????????????????????????????????
???????????????????????????????????????????????????
????????? ??? ??????????????? ? ????? ???????????????
?????? ?????????????????????????????????????????????????
?????? ??????????
1.INTRODUCTION
????????????? ???????????? ?????????????? ???????
???????????????????????????????? ???????????????????
?????????? ?????????? ???Æ???? ????????????????????? ???
?????? ???????????? ?????????? ?? ??????????????????????
?????Æ?????? ? ????????????????????????????????????
???????????????? ?? ??????? ?????? ??????????? ?????
????????? ??????????????????????????????
2.ILLUSTRATIVE EXAMPLE
????????????????? ?????? ??????? ??????????????
???????
??????????????????????? ??????????????
??????????????????? ????????????????????? ???? ???????
?? ?????????????? ??????????????? ?????????????????????????
???????? ????????????????? ??????????????????????????
??????????? ??????? ??????????????
???????? ??????????? ?????????????????????????? ????
??????????????????????????? ?????????????????? ???????
????????????????? ?????????????????????????? ?????????
??????
????????? ??????????????????????????
???????
?????????????????? ????? ??????????? ??????????????
???????
?????????
3.EXAMPLE INVARIANT
?????? ????????????????????????? ??????? ??? ????????
??????????????????????? ??????????????????? ?????????
???? ??????????????????????????????????
?
??????????? ????????? ??????????????????? ???????
????????????? ???????????
?
???????????????? ??????? ?? ???????????????????
?????????????????????????????????????????????
?????????????????
???????
??????
?????????????????
?????
????
?????? ????????????? ????????????????? ?????
???? ????????????????? ??????????
?????
?
???????????? ????????
?????
??????????????????????????
???? ?????????????????????????? ?????????? ????????
???? ??????? ???? ???? ??????? ????? ?????????Æ???????
????? ??????????????? ???????????????????????????????
???????????? ????????????? ???????????? ?? ????????????
???? ? ??????????????? ????????????? ?? ?????????????
?? ???? ???????? ??????????????????????? ?????????? ?????
????????
?????
???????? ?????? ???????????????????????
????? ?? ??????????? ???????????????????????? ? ???????
?
?? ???? ???? ????????????? ????????? ????????
?
?
? ?????
?
?
?????????????? ??????????????????????????? ??????????
????????????????????????????????????????????????
??????????
??????????????????????????????
????
???
??????????????
????
?????????????????????????????
??????????????????????????????????????
????
???????
??????????
??????????
??????????????????????????????
??????????????
?
????????????????????????????????
???????? ?????????????????????????
?
??????????????
?
?????? ?????????? ???? ????????????????????????????
??????? ?? ??????????????? ???? ?????????????????? ???
?? ?????????????????????????????????????????? ??????
????? ????????? ?????
???????????? ????? ???????????????????????????????
???? ??????? ???????????? ????????? ???????????????
??????????????? ?????? ???????????????? ??????????????
?????????????????????????????????????????????????
??? ??????????? ??????????????? ?????????
??????????????????????? ???????????????????
?? ????????? ?????????????????????????????????????
?
?? ?????????????? ?????????? ???????????????? ??????
??????
Page 2
??????????????????????????? ????
???????????????????
???????? ???????????
?????????????????
????????????????????????????
?????????????? ??
???
???
??
?? ???????????? ?????
???
????????????????????? ????????????
???
??? ???????????????????????????????
????????? ? ?????
?? ? ????? ????? ?????? ???????????????????
?? ??? ?????????
??????????? ?? ?????
????
???
?? ?????????????????????????? ?
?????????????????????????
?? ???????????????
?? ????? ??????????????????
??????? ???
????
???
?? ??????? ????????????????????
?? ??????? ??????
??????? ??????????
?? ? ???????? ????????
??? ????????????????????? ?
?? ? ??????? ??????? ????? ????????
?? ? ????????????? ? ????????
??????????
???? ?????
??? ????? ???
??? ???????????
????
????
????
????
??????????? ?????????????? ???????????
?????????? ????? ????????? ????? ???????????????????
?????? ????????????????? ??????????????? ??????
????????????????? ?????????????????????????
?????????????????????????????????????????????????
??????????????????????????????????????????????????????
??????????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
?????????? ????????????????????????????? ???????? ????
??????????? ????????????????????? ??????? ??????????
?????? ???????????????? ??????? ???????????? ????????
????????????
??????
???????? ????????????
?????????
??????????? ????????????????? ???????????????????
?????? ??
?????????
?????? ????????????? ??????????????
?????????????????????? ??????????? ???? ?
?? ??????????????????????????????????? ??????Æ?????
???????????????????????????????????????????? ?????????
????????????
????
?????
??????
???????
??
? ???????????
?
???????????
?
?
??????
??????
?
???????????? ??
?
?
???
??? ???
?
??????
?
?????????
?
?
? ???????
?
?
?????? ?????
?
?
??????
??????
?
??????????????
???????
???????? ?????????????
????????
?
?? ?????????????
????????????
?
?????????? ????
?
?? ?????????????????
????????????????????????????????????????????????????
???? ????????????????????????? ???????????
??????????
??
???????????????????? ??????????????????????????
?????? ?????????????????? ?????????????????
????
?????
??
????????????? ???????????? ????????? ???????????????
??????????????????? ???? ?????????????????? ???????
???????????? ??
?
????????????????????????????????
4.INVARIANT INFERENCE
??????????????????????????????? ?????? ????????? ?????
???????????????????????????? ???????????? ????????????
?? ????????????????????? ??????????????? ???????????????
??????? ?????????? ?????????? ?????? ????? ?????????????
???????????????????????????????????????????????????
????? ??????????????????????????????????? ?????????????
???????????????????????????????????????????????????
???????????????????? ???????? ????????????????? ??
??????????????????????????? ???????? ???????????????
???????? ????????????????????????????????? ?????? ???
???????????????????????? ???? ?????????? ????? ??????
???? ?????????????????? ????????????????? ??? ???????
????????????????????? ?????????????????????????????
???????????????? ???????????????????????????????????
?????????????? ?????????????????????????????????????
????????????????????????????????????????????? ????????
???? ??????????????????????????????? ???????????????
??????
4.1
?
Abstract method execution
??????????????????????? ????????? ???????
?????????????????????????????????????????????????
??????????????????????????? ?????????
??
??????????? ?
?????? ?????
?
???????????????? ??????????
??????
?????????????
???
????
?????????? ?
?????????????????????????
???????????? ???????????????? ??????? ???????
?????????
??
?????
????????????????????? ???????? ????? ??????
????????
???????????????????????????????????????
??????????????????????????????????
??????
???????
?? ?????????????????????????????????????? ????????
?????????????? ?????????? ?? ??????????? ?????? ??????
??????? ?????????????????????????? ??????????? ??????
???????????? ?????????????
??????
???????????????
??????????????????
??????????? ?????????????????? ??????
?? ?????????
????????
????????? ????????????????????
??????????? ?????????????
???????
?????????????????? ??????
????
?????? ?????? ????
?
?????????????????????? ?????????????? ??????????????
Page 3
constructorconstructor
methodmethod
Invariant State
Initial state
finalizer
?????????????????????????? ?????
?????
??
??
????
???
??
??
???? ??????????????? ??????
????? ????????????????
?
?????????????
?
???? ??????
??????????????????? ???????????????? ???
????????????????
?????????? ???????????????????? ???? ????????? ??????
?
????????? ????????????? ?????????????????
????
?? ??
??? ?????? ? ???????????? ??????????????????????
?????????
?????????
??
??????????
????
????????? ???
????
???????
?????
???????? ??????????? ??? ?????????? ??? ??? ????????
???? ?????? ????? ???????????????????????????????????
????????
??????
?? ???
????
??????????????????? ?????
????????? ?????????????????? ??????
?? ?????????????? ????
????? ?????? ???????????????????????????????????
???????????????????????????? ??????
??????????
????
????????????????????? ????????????
??????
??????????
?????????????????????? ??????????
????
?????????????
??????
??????????????? ???????????????????????? ??
???????????? ?????? ?????? ?? ???
??
????? ????????
??????
?
??????
??
??????????????? ??????????
?
?
???????
????????????????????
?
????????????? ?????? ?????????
???????????????????????????????? ?????????????????? ??
???
????
???????? ??????????????? ???????????????
????
?? ??????????????????????????????????????????????
???????????? ??????
????
?? ???????????????????
?????????????????
??
??
????? ??????????????????? ??????
????? ????????????????
?
??????? ??????????????????
??????? ????? ??? ?????????????????????????????? ????
?
?????
??
??????
????
?? ?????????
????????
????????????????
????
??
??
??
??
???
?
???????
?????? ??????????? ???? ???
?????????????
??
????????? ?? ???????? ??????????????????????? ?? ??????
?????
??
??
????
?
???? ??????? ?????????? ????????
????? ?????????? ??????????????????????????????????
??????? ????????? ?????? ?????????????????????? ??????
????
?
?? ????????? ???????? ????? ????????????? ????
???? ??????????????
?
??????????????????
?
???????
???????????????????? ???????? ?????????????????
?
???
???
????
?????????????????????????????????????
?
???
???????
?
????????? ?????? ????????? ?????? ???????????
?
??????????
???? ??????????????????????????? ???
?????????????????????????????? ??????????? ??????????
?
4.2
???? ???
Invariant Merging
????????????????
?????????????????????????????? ????????????????? ??
??????
????????????????????????????????????????? ?????
???? ??????????????????????????????????????? ??????
?????? ??????????????????????????????????????? ?????
??????????????????????????????????
??????
????????????
????????????????????? ??????????????????????? ????????
???????????
??????? ??????? ???????????
????
?????
??????
?
????? ?????
???????
????
?
?? ?????
????????
?
????
?????
????? ?
????
?
?????????? ?????????????????????
????????????????
??????????????? ?????????????????????????????? ??????
??????????????????????
??
??????????? ?
?
???????????
?
???????
??????
?
??????????????
?
?
????????????
?
??????????????????
?
??????????? ??????????? ?????????
????
?????? ?
??????????
?
?? ??????
????????? ???????????????
????????????
??
?????????????????? ???????????????
????
???? ??
?????
???????????? ????????????????????????????????????
??????????????????????????????????????????? ??
?? ?????????????????????????????????????? ????????
??????????????????? ???????
??????
?????????????????? ?
???????????? ?????????????????????????????? ??????????
?????? ????????????????????????????????? ????????????????
??????????????????? ??????????? ????????????????? ??
????? ???????????????????????????? ?????????????????
?????? ?????????????????????????????????????????
???????? ???????? ????????? ??????????? ????? ?????????
??????? ?????????????? ?????????????? ?????????? ??
?? ?????????Æ?????????????????????????? ???????????
??????????????????? ????????????? ???? ???????????
?????????????? ??????????????? ???????????????? ??????
??????????? ??????? ?????????????????????????????????
??????????????????????? ???????? ???????
???????? ???
??????????????? ????????????????????????? ???????
??????? ????????? ?????????????? ?????????????????????
???? ???? ?????????????????????? ????????? ??????? ??????
????
????????????????? ???????????? ??????????? ??
???????????? ????????? ?????????????????????????????
??????????????????????????????????
Page 4
??
? ???????????
?
???????????
?
?
??????
??????
?
? ?????????????
?
?
???
??????
?
??? ???
?
? ????????
?
?
?? ?????
?
??????????????
?
??????? ???????? ??????????? ???? ??? ??????? ???????
??????? ??? ???
????
?????? ??????? ?????? ?? ????????????
?????????????? ??????????????? ??Æ???????????? ????????????
????? ?????????????????????????????????????????????
????????????????????????????????????????????????
?????????????????????
??????
???????????????????????
????????????????????? ?????????????????????????????
???????????????????????????????????????????????????
????????????????????????????????????????????????????
????????????????????????? ????????????????????????
??????? ???????????????? ????????????
????
??????? ???
??????????? ????????????????????????????? ???????
???? ?????????????????????? ??????????????? ???????????
???????????????? ???????????? ??????????? ?????????????
?? ???????????????? ???
????
??? ??? ??????????????
????
???????????? ?????
??? ?????????????????? ???? ????????
??????? ????
? ???? ?????????
??????
??????????????? ????? ???????????
???????????????????? ?????????? ????????? ????????
???????????? ??????? ???????? ???????? ?????????????
?? ?????????????? ????????? ??????????? ?????????????
??? ??????? ?????? ????????? ???? ?????????
????
???? ?????
???????? ?????????
????
? ???????????????????????????
?? ????????????? ???????????????? ??????????????????
???????????????? ??????????????? ?? ??????? ????????
??
???????
?????????????????????????????????????? ????
?? ???? ??????? ????? ?????????????????????? ??????
???? ?????? ??????????????????? ?????????????????????
????????? ?????? ??????? ??????????????? ???????? ??????
??????????????????????? ???????? ?????????????????? ???
?????? ??????
????????
?? ????????
??
?????????? ???
???
??????????????? ??????????????? ?????? ????????????????
?????????????
??????????? ???????????????? ??????????
??????????? ??????????? ???????????????????????????
???????? ??????????????????????? ??????????????? ???
???????????? ??? ????????? ????????????????????????????
?????????? ??????????????????????????????????????????
?????????? ????????????????? ??????????????? ???????
??????????????? ????????? ??????????? ? ??????????? ?????
???? ???????????? ????????????????????????????? ???
??????????????? ??????????????????????????????????
????? ????????
???????????????????????????????? ???????????????
?????????????? ?????????
????
???????
?????????????????
??????????????? ?????????? ???? ???????????????? ????
???????
?? ???????????????? ??????? ???????
????????
??
?????????? ????????????
?????????????????
??????
?????????
???????
????????
???????????
??
?
?
??????
?
??? ????
?
????????
??
?
?????
?
?????
?
????????
?
???
?
?
??????
?
? ??
?
????
????????
?
?
??
?
?
?
??????
? ???????????????????? ??????????????????????????????
?????????
??????
????????? ??????????????????? ?????
?? ?????? ???
??
????????? ??????????
?
?????? ?????????
? ??????????????
?
???????????? ???????
??
??????????????
?????
?
?
??????????????????
?
??? ???????????? ???????????
?? ????????????? ???????????? ?????????? ? ????????????
????? ???????????????????????????? ?????????????
??????? ????????? ????????????????? ???????????????? ??
?????????????? ?????? ???? ??????????????? ???? ????
???????? ????????????????????????????????????????????
?????????????????????? ????????????????? ???? ????????
?? ??????????? ??????????????????????????????????
?
?? ?????? ??????????????????
??
????
?
?????????
?? ???????????
?
?????????? ??????? ???????
?????? ?????
???????? ?????? ?????????????????? ???????
????? ???
???????? ??? ?????????? ???????????????? ??????????????
??????????? ??????????????? ???????????? ???????????????
?????? ???????????????? ???? ???????????????????? ???
?????????? ???????????????????? ??????? ???????? ???????
???
4.3
????????
Summary of Invariant Inference
???????????
????????????????????? ?????? ???????????????? ????????
???? ?????? ???????? ??????????????????????????????????
???? ??????????????????????????????????????????????
?? ???????????????????????????????? ???????????????
???? ??????????????????????????????? ???????
?????
?????
???? ??????????????? ?????????? ??????? ???????????????
???????????????????? ????????????????? ?????????????
???????????
????????????????? ??????????????????????????????
?? ??????????????????????????? ????? ???????????????
????????????????????? ?????????????????????????????
?????????????? ?????????????
????????
?????????
?????? ??????????????????????????????? ???????????
?????? ???? ???? ???????
??????
???????????????????????
??????????? ?????????????????????? ????????? ????????
??????????????????????????????? ?? ??? ?????????????
??????? ??????????????????????? ???????? ??????????????
??????????? ??????????????????????????? ???? ????? ?????
??????????? ??????????????? ?????? ???????????????????
??????????? ????????? ???????????????????????????????
???? ???????????????????
5. OTHER EXAMPLES
???????????????????? ????????????????????????? ?????
???? ????????????? ???????
??????????? ?????????????????????? ?????????????????
??????????????????????? ??????????????? ????????????????
???????????????????????????????????????? ?????????
?????????? ?? ???????????????????????????????????????
???????????????? ????????????????? ???????????? ??????
?????????????????????????????????? ???
??????????
???????? ??????????? ??? ????????????? ?????????? ?????
??????????? ????????????????????????????????????? ??
?? ?????????????? ???????? ??????????? ????? ????????
??????????????? ???????? ????????
???? ????? ????????????????? ?????????????????
Page 5
????????????????????? ????? ????????????????????????
????? ??????????? ??????????????????????????????? ???
???????????????????? ??????????? ????????????????????
???????????????? ?????????? ???? ??????????????????
???????????? ??????????? ????????????? ??????????????
???????????? ?? ?????????????????? ??? ?????????? ???
?
?????? ???? ????? ????????? ???????? ????
??
????????? ????
?????????
?
?????????? ? ?????????????????????
??
??
????
??????????????????????????????????????????????????
?????????????????????????????????????????????? ?????
????????? ?????????????????? ????? ???? ??? ???????
??? ???????????????????????? ????????????? ?????????
?? ???????????? ???????????????? ???????????????????
????????? ???? ??????? ??????? ???????????????????? ??
? ?????????????????? ????????? ???? ????????? ????
?????? ???????? ?? ?????????????????????????? ??? ???????
?????????????????? ???????? ?? ???????????????????????
?????????
6.OBJECT COMPOSITION
??????????????????? ?
?
????????
?
??? ???
???????
?
???????????? ??????????????????????????????????
?
?? ?????
????????????? ????????????? ?????????????? ?????
???
??
??????????? ???????????????????????????? ????????
??????? ???????
?? ???????? ?????????????????? ???????
?????????
???
????
?
????? ?
????????? ???????????? ??
???? ???????????? ?????? ????????????? ????????????
??????????
?????????????? ????????
????
????????? ?????
??????????????????????????????????????? ??????????
????? ????????????????????????
????????????????????????????????????? ???????? ???
???????????????? ????? ?????? ???????????????? ???? ???
?????????? ???????????? ????????? ???????????????? ???????
????? ???????? ?????? ????????????????????????????????
????????????? ?????????????????????? ???????????? ?????
??????????? ?????????????????????????????????????????
??????????????????????? ?????????? ????????? ????? ??????
?????????? ?????????????? ???????? ????????? ?????????
???? ???????? ??????? ???????????????????????????? ??????
?????? ???????? ??? ?????????????
??????????
????????
??????????????? ???????????????????? ? ????? ????????????
???????????????????? ? ?????? ??????????????????????
?????????????????????????????????????????????? ??
?? ????????? ???????????????? ??????? ?????????????????
?? ???????? ??????????? ??????? ?????????????????????
???????????????? ??????????????????????????? ?????
??? ????????
????????????????????????? ????
???
?????????????????????
?????????????
????????? ??????
???????????????? ??????? ?????????? ??
???????? ????????
????????
???????
?
?
??????????????????????????
????
??????????????????
???? ??????????
7. CAVEATS
????????? ??????? ???????????????????? ????????
?????? ??????????????????? ????????????????????????
?? ??? ????????????????????? ?????? ?????? ?????????
?? ???????????? ??????????????? ????????????????????
???????????????????? ????????? ???????????????????
?????????? ??? ?????????????????????????? ????????????
???????????? ??????? ?????????????????????????? ?????
????????????????????????????? ??????? ?????????????
??? ???? ??????? ????????????? ????????????????? ?
? ????????????????????????????????? ??????????????? ???
? ????????????????????????????
???????????? ????????????? ?????????? ?????????????
?????????????? ? ??????? ????????? ?????????? ?? ?????
???????????????????? ???????? ??? ????????? ???????? ????????
???????????????????????????????????????? ?????????
????????????? ? ???????????????????????? ??????????
?????????? ?????????? ???????? ???? ? ?????????? ????????
?????????? ??????????? ???? ??????????????????????
??????? ????????????????????????? ??????????????????
??????????????
?????? ????????????? ??????? ????????? ???
????????? ?????? ??????????????????????? ?????????? ???
???????? ? ?????????????? ???????????????????????????
????? ?????????????????????????????????????????????
????????????? ? ????????????????? ????????????????????
???????????? ?????????????? ????? ???? ???????????????
?????? ???????? ?????????????????????? ??????????????
???????? ?? ??? ??????????? ??????????????????????????
???? ??????????????????????????????? ?????????????? ???
?????????????
8.RELATED WORK
?? ???? ?????????????? ????????????????? ?? ????????????
???????????????? ????? ? ?? ??????????????????????
?????????????????????????????????????????????? ??
?????????? ???????????????????????????? ???????????????
??????????????????? ???????????????? ??????????? ??????
????????? ????????????????? ???????????????? ????????
???????????????????????? ?????????????????????????????
?????????????? ?????? ?????????? ?????????????????????
?????????? ??????????? ???????????????????????????
???????????????????????????????????????????? ?????
??????????? ????
??????????????????????????????????????????????????
?????????????????????? ?????????????????????????????
???????????? ??????? ??????????????????????????????
????????????????????????????????? ????????????????? ????
?? ????????? ??????????? ?????? ???? ?????????????????
????????? ????????? ??????????????????? ?????????
??????????????????????????
??????????????????? ???????????????? ???????????????
?????? ?????????????????????????????? ?????? ??????
?????????????????????????? ???????? ?????????????
???????? ??????????????????????? ??????????????????????