An Approach to Collecting Object Graphs for Data-structure Live Programming Based on a Language Implementation Framework (bibtex)
by Shusuke Takahashi, Yusuke Izawa, Hidehiko Masuhara and Youyou Cong
Abstract:
Data-structure live programming environments execute programs, collect object graphs (objects and their mutual references) created and modified during the execution, and visualize the graphs as a node-link diagram. Existing implementations collect object graphs by instrumenting checkpoints, at which the system traverses reachable objects, at every necessary point in the program. Since the cost of each checkpoint is proportional to the number of existing objects, the overhead of running checkpoints can be huge. This paper proposes (1) a technique to collect object graphs by recording object creation and modification events into an efficient data structure, and (2) an implementation design for the object graph collection mechanism by extending a language implemented on top of a language implementation framework. As a result, the overhead of object graph collection is almost proportional to the number of object creation/modification operations in total. We implemented the proposed mechanism for the Kanon data-structure live programming environment by extending GraalJS, a JavaScript implementation on the Graal/Truffle language implementation framework. We compared our new implementation against the original Kanon, which is based on checkpointing, and confirmed that our implementation improves program execution (and data collection) speed, and has sufficiently small overheads to reconstruct object graphs.
Reference:
An Approach to Collecting Object Graphs for Data-structure Live Programming Based on a Language Implementation Framework (Shusuke Takahashi, Yusuke Izawa, Hidehiko Masuhara and Youyou Cong), In Journal of Information Processing, volume 30, 2022. (Presented at IPSJ SIG PRO Workshop [takahashi2021ipsj-pro136]. Accepted on 2022-01-11. A preprint is also archived as IPSJ Transaction on Programming, 15(2), May 2022)
Bibtex Entry:
@article{takahashi2022jip,
  pdf = {jip2022.pdf},
  author = {Shusuke Takahashi and Yusuke Izawa and Hidehiko Masuhara and Youyou Cong},
  title = {An Approach to Collecting Object Graphs for Data-structure Live Programming Based on a Language Implementation Framework},
  keywords = {live programming environment, meta-language implementation framework, Graal, Truffle, object graph},
  journal = {Journal of Information Processing},
  year = 2022,
  volume = 30,
  month = jun,
  pages = {451--463},
  doi = {10.2197/ipsjjip.30.451},
  url = {https://www.jstage.jst.go.jp/article/ipsjjip/30/0/30_451/_article/-char/en},
  note = {Presented at IPSJ SIG PRO Workshop \cite{takahashi2021ipsj-pro136}.  Accepted on 2022-01-11. {A preprint is also archived as IPSJ Transaction on Programming, 15(2), May 2022}},
  abstract = {Data-structure live programming environments execute programs, collect object graphs (objects and their mutual references) created and modified during the execution, and visualize the graphs as a node-link diagram. Existing implementations collect object graphs by instrumenting checkpoints, at which the system traverses reachable objects, at every necessary point in the program. Since the cost of each checkpoint is proportional to the number of existing objects, the overhead of running checkpoints can be huge. This paper proposes (1) a technique to collect object graphs by recording object creation and modification events into an efficient data structure, and (2) an implementation design for the object graph collection mechanism by extending a language implemented on top of a language implementation framework. As a result, the overhead of object graph collection is almost proportional to the number of object creation/modification operations in total. We implemented the proposed mechanism for the Kanon data-structure live programming environment by extending GraalJS, a JavaScript implementation on the Graal/Truffle language implementation framework. We compared our new implementation against the original Kanon, which is based on checkpointing, and confirmed that our implementation improves program execution (and data collection) speed, and has sufficiently small overheads to reconstruct object graphs.}
}
Powered by bibtexbrowser