• 検索結果がありません。

JVM上の動的言語のための抽象解釈

N/A
N/A
Protected

Academic year: 2021

シェア "JVM上の動的言語のための抽象解釈"

Copied!
1
0
0

読み込み中.... (全文を見る)

全文

(1)情報処理学会論文誌. プログラミング. Vol.12 No.2 20 (May 2019). 発表概要. JVM 上の動的言語のための抽象解釈 馬谷 誠二1,a) 2018年11月1日発表. 言語仕様が厳密には規定されていないプログラミング言語上でプログラムを書く場合,実行時の振舞い を正確に把握するには,リファレンス実装を使って実際に実行せざるを得ない.同様に,言語仕様が厳密 に規定されていない JVM 上の言語で書かれたプログラムの性質を静的に解析しようとすれば,通常,リ ファレンス実装(ほとんどの場合,バイトコードへのコンパイラ)の生成したバイトコード命令列を解析 する以外に選択肢がない.JVM バイトコードを対象とする静的解析器は数多く存在する.それらの解析器 は,Java や Scala のような静的型付き言語からコンパイルされたバイトコード命令列に対しては上手く機 能する.一方,動的な言語からコンパイルされたバイトコード命令列に適用すると,ほとんどの解析器は 有用な情報を取得することができない.そのような精度の低下の主な原因は,動的言語の動的な振舞いを 実現するために用いられる実行時機構の複雑さにある.本発表では,既存のバイトコードレベルの抽象解 釈フレームワークを用いた動的言語向け抽象解釈器の構築方法を提案する.我々の抽象解釈器は,抽象解 釈と「具象解釈」を混ぜながら実行することにより,バイトコードレベルの解析技術に依存しながらも, 動的言語の振舞いをある程度正確に把握することが可能である.提案する方法を使って Clojure 言語のた めの抽象解釈器の構築を実際に行った.さらに,標準ライブラリ中のいくつかの関数定義を用いて,提案 する構築方法の有効性を確認した.. Presentation Abstract. Abstract Interpretation for JVM-hosted Dynamic Languages Seiji Umatani1,a) Presented: November 1, 2018. When writing a program in a programming language whose semantics is not specified precisely, we have to actually execute our program using the reference implementation in order to reason about its behavior. Similarly, if we want to analyze the characteristics of a program written in a JVM-hosted language whose semantics is not precise, we usually have no choice other than analyzing bytecode instructions generated by the reference implementation (i.e., a bytecode compiler). There are many available static analyzers targeting JVM bytecode. They work well for bytecode instructions compiled from a statically-typed language such as Java and Scala. On the other hand, when applied to the ones compiled from a dynamic language, most analyzers fail to obtain useful information. Such low accuracy is mainly caused by the complexity of runtime mechanisms used for realizing dynamic behavior of the dynamic language. In this presentation, we propose a method for building an abstract interpreter that exploits an existing bytecode-level abstract interpretation framework. While relying on the bytecode-level analysis, our abstract interpreter can understand the exact behavior of programs written in a JVM-hosted dynamic language to some extent. We actually implemented an abstract interpreter for Clojure using the proposed method and confirmed its effectiveness by applying the abstract interpreter to several functions defined in the standard library.. This is the abstract of an unrefereed presentation, and it should not preclude subsequent publication. 1. a). 京都大学大学院情報学研究科 Graduate School of Informatics, Kyoto University, Kyoto 606–8501, Japan [email protected]. c 2019 Information Processing Society of Japan . 20.

(2)

参照

関連したドキュメント

We present a Sobolev gradient type preconditioning for iterative methods used in solving second order semilinear elliptic systems; the n-tuple of independent Laplacians acts as

Finally, in Section 7 we illustrate numerically how the results of the fractional integration significantly depends on the definition we choose, and moreover we illustrate the

Keywords: continuous time random walk, Brownian motion, collision time, skew Young tableaux, tandem queue.. AMS 2000 Subject Classification: Primary:

“Breuil-M´ezard conjecture and modularity lifting for potentially semistable deformations after

After proving the existence of non-negative solutions for the system with Dirichlet and Neumann boundary conditions, we demonstrate the possible extinction in finite time and the

This paper presents an investigation into the mechanics of this specific problem and develops an analytical approach that accounts for the effects of geometrical and material data on

While conducting an experiment regarding fetal move- ments as a result of Pulsed Wave Doppler (PWD) ultrasound, [8] we encountered the severe artifacts in the acquired image2.

Finally, in Figure 19, the lower bound is compared with the curves of constant basin area, already shown in Figure 13, and the scatter of buckling loads obtained