@@ -34,7 +34,7 @@ YARV は、Ruby プログラムのための次の機能を提供します。
34
34
35
35
* Compiler (compile.h, compile.c)
36
36
37
- コンパイラは、Ruby インタプリタのパーサによって生成された構文木(RNode
37
+ コンパイラは、Ruby インタプリタのパーサによって生成された構文木(RNode
38
38
データによる木)を YARV 命令列に変換します。YARV 命令については後述しま
39
39
す。
40
40
@@ -43,7 +43,7 @@ YARV は、Ruby プログラムのための次の機能を提供します。
43
43
44
44
変換中は Ruby の Array オブジェクトに YARV 命令オブジェクト、およびオペ
45
45
ランドを格納していき、最後に実行できる形に変換します。コンパイラでは、コ
46
- ンパイル中に生成するメモリ領域の管理が問題になることがありますが、YARV
46
+ ンパイル中に生成するメモリ領域の管理が問題になることがありますが、YARV
47
47
の場合、Ruby インタプリタがすべて面倒をみてくれるのでこの部分は非常に楽
48
48
に作ることができました(ガーベージコレクタによって自動的にメモリ管理をし
49
49
てくれるため)。
235
235
236
236
正常系(例外が発生しなかった場合)と異常系(例外が発生したときなど)の2
237
237
種類の命令列が生成されます。正常系では、ただの連続したコード領域としてコ
238
- ンパイルされます。また、異常系ではブロックとして実装します。最後は必ず
238
+ ンパイルされます。また、異常系ではブロックとして実装します。最後は必ず
239
239
throw 命令で締めることになります。
240
240
241
241
@@ -301,7 +301,7 @@ YARV では高速化を目的としているので、さまざまな最適化手
301
301
302
302
*** threaded code
303
303
304
- GCC の C 言語拡張である値としてのラベルを利用して direct threaded code
304
+ GCC の C 言語拡張である値としてのラベルを利用して direct threaded code
305
305
を実現しています。
306
306
307
307
@@ -322,7 +322,7 @@ GCC の C 言語拡張である値としてのラベルを利用して direct th
322
322
323
323
*** ブロックと Proc オブジェクトの分離
324
324
325
- ブロック付きメソッド呼び出しが行なわれたときにはすぐにはブロックを Proc
325
+ ブロック付きメソッド呼び出しが行なわれたときにはすぐにはブロックを Proc
326
326
オブジェクトとして生成しません。これにより、必要ない Proc オブジェクトの
327
327
生成を抑えています。
328
328
@@ -377,7 +377,7 @@ YARV 命令列のアセンブラを用意しました。使い方は rb/yasm.rb
377
377
378
378
* Dis-Assembler (disasm.c)
379
379
380
- YARV 命令列を示すオブジェクト YARVCore::InstructionSequence には disasm
380
+ YARV 命令列を示すオブジェクト YARVCore::InstructionSequence には disasm
381
381
メソッドがあります。これは、命令列を逆アセンブルした文字列を返します。
382
382
383
383
0 commit comments