Mercurial > hg > CbC > old > device
comparison Changes @ 438:626d705471d5 lazy-branch
Unexecuted code in conditional. Lazy jmp code generation.
author | kono |
---|---|
date | Mon, 15 Nov 2004 20:33:30 +0900 |
parents | 49d4483d5110 |
children | a531bbf572e3 |
comparison
equal
deleted
inserted
replaced
437:49d4483d5110 | 438:626d705471d5 |
---|---|
6636 list3(LABEL,next,label) | 6636 list3(LABEL,next,label) |
6637 list3(COMMENT,next,comment) (?) | 6637 list3(COMMENT,next,comment) (?) |
6638 | 6638 |
6639 (1) make inline tree | 6639 (1) make inline tree |
6640 (2) evaluate inline function (copy and partial evaluation) | 6640 (2) evaluate inline function (copy and partial evaluation) |
6641 | 6641 peval(inline_func,args) |
6642 | 6642 similar to the function call (with type check) |
6643 | 6643 |
6644 | 6644 const いるのかなあ。 |
6645 builtin_constant_p かぁ。 | |
6646 | |
6647 Mon Nov 15 17:37:57 JST 2004 | |
6648 | |
6649 code hoge() { a; } | |
6650 code hoge1() { b; } | |
6651 | |
6652 では、a-> b に、そのまま落ちるべきだろうね。ファイルが分離される | |
6653 場合は少し困るが.... | |
6654 | |
6655 if (0) hoge; でhogeが生成されてしまう。control で切っても出るね。 | |
6656 いや、消えてました。ただ、jmp は生成されてしまうね。checkret | |
6657 で、チェックするべきでしょう。 | |
6658 | |
6659 checkret は、control が生成されるところで呼ばれるわけだから、本来は | |
6660 control=1 にするのは、checkret だけであるべき。 | |
6661 jmp(hoge) は、pending_jmp | |
6662 を設定して、checkret で、pending_jmp を生成するわけだが。 | |
6663 で、pending jmp が設定したlabelに等しければ、pending_jmp は0に | |
6664 設定される(しかしreferenceされたかも知れないからlabelは生成する?) | |
6665 label にreferenceしたかどうかのflagを付けた方が良い? | |
6666 | |
6667 if (1) hoge else fuga ; で fuga が生成されてしまう。bexpr で | |
6668 always jump かどうかを返したいところだが... |