More Related Content
PPTX
PDF
PDF
PPT
PDF
KEY
関ジャバ JavaOne Tokyo 2012報告会 KEY
PDF
JavaOne2015報告またはこれからのJava What's hot
PPT
Javascriptで無限ループを実現する5つの方法 PDF
PDF
PPTX
PDF
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計 PDF
PPTX
もしも… Javaでヘテロジニアスコアが使えたら… PDF
PDF
PDF
PDF
Effective Modern C++ 読書会 Item 35 PDF
Lisp Tutorial for Pythonista : Day 4 PDF
PPT
Google Perf Tools (tcmalloc) の使い方 PDF
WASM(WebAssembly)入門 ペアリング演算やってみた PDF
PDF
SECDマシン 実装と動きとその他もろもろについて PDF
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ PDF
Intro to SVE 富岳のA64FXを触ってみた PDF
Viewers also liked
PDF
PDF
PDF
Summary of "Hacking", 0x351-0x354 PDF
Matrix Multiplication in Strassen Algorithm PDF
PDF
Kink: プロトタイプベースの俺々 JVM 言語 PDF
PDF
Quasar: Actor Model and Light Weight Threads on Java PDF
金勘定のためのBigDecimalそしてMoney and Currency API PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6 PDF
PDF
PDF
PDF
PDF
PDF
Java SE 9の紹介: モジュール・システムを中心に Similar to Kink: invokedynamic on a prototype-based language
PDF
PDF
PDF
PDF
PDF
PDF
PDF
KEY
JJUG CCC 2012 Real World Groovy/Grails PPTX
PDF
PDF
PPT
G*workshop sendai 20100424(v2) PDF
Javaセキュアコーディングセミナー東京第1回 講義 PDF
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz... PDF
DSL by JRuby at JavaOne2012 JVM language BoF #jt12_b101 PDF
(Ruby使いのための)Scalaで学ぶ関数型プログラミング PDF
大規模なギョームシステムにHaxeを採用してみた話 PDF
Play framework 2.0のおすすめと1.2からのアップグレード PDF
PPTX
Kink: invokedynamic on a prototype-based language
- 1.
- 2.
1
要旨
• Kink というJVM 言語を作っています
• JavaScript や Lua と同様に、クラスのないオブ
ジェクト指向言語です
• invokedynamic がどこに使えるものか考えて
みました
- 3.
2
論点
• Kink の紹介
– クラスのない世界
– なんでもメソッド
– 気になる性能は?
• invokedynamic の使い所
– スロットアクセスの最適化
– SwitchPoint で実行モード切り替え
- 4.
3
論点
• Kink の紹介
– クラスのない世界
– なんでもメソッド
– 気になる性能は?
• invokedynamic の使い所
– スロットアクセスの最適化
– SwitchPoint で実行モード切り替え
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
12
気になる性能は?
• tarai(13 60) (たらい回し関数、竹内関数) で
マイクロベンチマーク
&tarai = { (&X &Y &Z)
(X <= Y).then {
Y
}{
tarai(tarai(X - 1 Y Z) tarai(Y - 1 Z X) tarai(Z - 1 X Y))
}
}
printline(tarai(~ argv.map { __.int }))
- 14.
13
結果: bc よりは速い
GNUbc 1.06.95
Kink 2012-02-19
C Ruby 1.8.7
scm 5e5
Python 2.6.6
mawk 1.3.3
C Ruby 1.9.2
Lua 5.0.3
Groovy 1.7.0
JRuby 1.6.6
0 20 40 60 80 100 120 140 160
秒
- 15.
- 16.
15
論点
• Kink の紹介
– クラスのない世界
– なんでもメソッド
– 気になる性能は?
• invokedynamic の使い所
– スロットアクセスの最適化
– SwitchPoint で実行モード切り替え
- 17.
- 18.
- 19.
- 20.
19
スロットアクセスの最適化
• キャッシュヒット →フィールドを直接取得
• キャッシュミス → フォールバック
• MethodHandles#guardWithTest が使えそう
if (slots.getClass() == #cachedClass) { test
return ((#cachedClass) slots).bar; target
} else {
deoptimize();
fallback
return slots.get("bar");
}
- 21.
- 22.
21
SwitchPoint で実行モード切り替え
• SwitchPointは MethodHandle のファクトリ
– SP.guardWithTest(target, fallback):MethodHandle
– 通常は target が実行される
– SwitchPoint が invalidate されると、それ以降は
fallback が実行される
• 処理の実行モードを切り替えるのに使える
– 代入処理の MH を SwitchPoint で生成
– 代入メソッドが再定義されたら invalidate
- 23.
- 24.
23
参考
• Kink ProgrammingLanguage
– http://code.google.com/p/kink-lang/
• V8 JavaScript Engine
– http://code.google.com/p/v8/
– スロットアクセスを最適化する仕組みのパクリ元
(Hidden Class)
• An efficient implementation of SELF
– http://dl.acm.org/citation.cfm?id=74884