6.24. kink/TRACE

6.24.1. trace型

traceは、スタックトレースの要素である。

traceは次の属性からなる。

• Sym: 呼ばれた関数のシンボルのstr値。

• Location: 呼び出しが起きた場所のlocation値。

• Tail?: 呼び出しが末尾呼び出しかどうかのbool値。

6.24.1.1. Trace.sym

symは、Traceの属性Symを戻す。

6.24.1.2. Trace.location

locationは、Traceの属性Locationを戻す。

6.24.1.3. Trace.tail?

tail?は、Traceの属性Tail?を戻す。

6.24.1.4. Trace.desc

descは、Traceを記述するstr値を戻す。

Tail?属性がtrueの場合、結果の最初の部分は "{...}" のように中括弧に囲まれる。

Tail?属性がfalseの場合、結果の最初の部分は "[...]" のように大括弧に囲まれる。

例

6.24.1.5. Trace1 == Trace2

== 演算子、つまりop_eqメソッドは、Trace1とTrace2が同値の属性を持っているかどうかを戻す。

事前条件

Trace2はtrace値でなければならない。

6.24.2. TRACE.new(Sym Location ...[$config={}])

newは、新しいtrace値を戻す。

コンフィグメソッド:

• C.tail

結果のtrace値は、SymとLocationを同名の属性として持つ。C.tailが呼ばれた場合、Tail?はtrueになる。C.tailが呼ばれなかった場合、Tail?はfalseになる。

事前条件

Symはstrでなければならない。

Locationはlocationでなければならない。

例

6.24.3. TRACE.is?(Val)

is?は、Valがtraceであるかどうかを戻す。

6.24.4. TRACE.snip

snipは、Sym="", Location=LOCATION.empty, Tail?=trueであるようなtrace値を戻す。

このtrace値は、省略された末尾呼び出しのトレースを置き換えるのに使われる。

6.24.5. TRACE.current_traces

current_tracesは、抽象スタックマシンのスタックのtraceを、底からトップに向かう順序で、vecとして戻す。

current_tracesの呼び出しの最後では、次の抽象命令列が評価される。