Mercurial > hg > Members > anatofuz > slides
annotate slides/2018/05/08/slide.md @ 43:fc5259b6167e
auto-Update generated slides by script
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 May 2018 15:36:32 +0900 |
parents | 7c19d3c0d027 |
children |
rev | line source |
---|---|
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 title: CbCによるMoarVMの改良 |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 author: Takahiro Shimizu |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 profile: |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 lang: Japanese |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
7 # 研究目的 |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 - Perl5の後継言語として開発されているPerl6はMoarVMと呼ばれるVMを搭載している. |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
9 - Perl6はMoarVM,JVM,JavaScript上で動くRakudoと呼ばれる実装と,コンパイラ開発者用のサブセットであるNQPが主な実装となっている. |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 - 現在Perl6及びMoarVMは全体的な速度がPerl5と比較し低下しており,実務として利用できるレベルに達していない. |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
11 - さらにPerl6の実装自体巨大なcase-switch文など見通しが悪くなっている. |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
12 - この問題を解決するために現在当研究室で開発している継続を中心にしたContinuation based Cを用いて改良を行う |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
13 - CbCの設計理念からVMの実装と親和性が高い事も推測できる為,実際にCbCを用いてどのようにVMが実装できるかを検証する |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
14 |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
15 # 研究内容 |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
16 - MoarVMの主にCase文をCbCに書き換える |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
17 - ちょっと早くしたい |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 # 今週の進捗 |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
21 - YAPC::EUで発表されたMoarVMの資料を読んでいました |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
22 - cf. http://www.jnthn.net/papers/2013-yapceu-moarvm.pdf |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
23 - MoarVMの実装を読み始めました |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
24 - mercurialにMoarVMをあげました |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
25 - オープンソースカンファレンスについては何も出来てないです… |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
26 - 進捗管理君を書いてました |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
28 # 6model |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
30 - Perl6のオブジェクトパターン |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
31 - `Object` |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
32 - `Stable` |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
33 - How(Meta-object) |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
34 - REPR |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
35 - WHAT |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
36 - WHO |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
37 - Method キャッシュ |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
38 - 型キャッシュ |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
39 - `Flags,owner` |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
40 - `GC stuff` |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
41 - `<body>`からなる |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
43 # CbCの書き換え |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
45 - case文の書き換え |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
46 - なるべく巨大なものを選択 |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
47 - spesh以下のファイルが比較的巨大なcase文 |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
48 - `static void optimize_bb_switch` |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
49 - `spesh/optimize.c` |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
50 - 最適化のスイッチ部分 |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
51 - かなり巨大 |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
52 - 他には |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
53 - `containers.c` |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
54 - `serialization.c` |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
55 - unicodeの文字処理部分 |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
57 # 書き換えている箇所 |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
59 ```c |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
60 static void optimize_bb_switch(MVMThreadContext *tc, MVMSpeshGraph *g, MVMSpeshBB *bb, |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
61 MVMSpeshPlanned *p) { |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
62 MVMSpeshCallInfo arg_info; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
63 /* Look for instructions that are interesting to optimize. */ |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
64 MVMSpeshIns *ins = bb->first_ins; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
65 while (ins) { |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
66 switch (ins->info->opcode) { |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
67 case MVM_SSA_PHI: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
68 analyze_phi(tc, g, ins); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
69 break; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
70 case MVM_OP_set: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
71 copy_facts(tc, g, ins->operands[0], ins->operands[1]); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
72 break; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
73 case MVM_OP_isnull: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
74 optimize_isnull(tc, g, bb, ins); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
75 break; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
76 case MVM_OP_istrue: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
77 case MVM_OP_isfalse: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
78 optimize_istrue_isfalse(tc, g, bb, ins); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
79 break; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
80 case MVM_OP_if_i: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
81 case MVM_OP_unless_i: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
82 case MVM_OP_if_n: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
83 case MVM_OP_unless_n: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
84 optimize_iffy(tc, g, ins, bb); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
85 break; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
86 case MVM_OP_if_o: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
87 case MVM_OP_unless_o: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
88 optimize_object_conditional(tc, g, ins, bb); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
89 break; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
90 case MVM_OP_not_i: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
91 optimize_not_i(tc, g, ins, bb); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
92 break; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
93 case MVM_OP_prepargs: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
94 arg_info.cs = g->sf->body.cu->body.callsites[ins->operands[0].callsite_idx]; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
95 arg_info.prepargs_ins = ins; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
96 arg_info.prepargs_bb = bb; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
97 break; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
98 case MVM_OP_arg_i: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
99 case MVM_OP_arg_n: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
100 case MVM_OP_arg_s: |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
101 case MVM_OP_arg_o: { |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
102 |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
103 ``` |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
104 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
105 # 現在 |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
106 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
107 - case文の書き換えの部分をどうするか悩んでいます |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
108 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
109 ```c |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
110 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
111 //XXX TODO 書き換えてる |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
112 __code optimize_bb_switch_cbc(MVMThreadContext *tc, MVMSpeshGraph *g, MVMSpeshBB *bb, |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
113 MVMSpeshPlanned *p) { |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
114 MVMSpeshCallInfo arg_info; |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
115 /* Look for instructions that are interesting to optimize. */ |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
116 MVMSpeshIns *ins = bb->first_ins; |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
117 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
118 if (ins){ |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
119 goto optimize_bb_switch_cbc_ins(ins->next); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
120 } |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
121 } |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
122 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
123 __code optimize_bb_switch_cbc_ins(MVMSpeshIns *ins){ |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
124 |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
125 if (ins){ |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
126 goto optimize_bb_switch_cbc_ins(ins->next); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
127 } |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
128 |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
129 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
130 goto optimize_bb_switch_cbc_ins(ins->next); |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
131 } |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
132 |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
133 ``` |
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
134 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
135 # 今週のTODO |
42
7c19d3c0d027
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
136 |
43
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
137 - case文をどうにかして書き換える |
fc5259b6167e
auto-Update generated slides by script
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
42
diff
changeset
|
138 - 試しにコンパイル |