Concurrent Clean : CleanJ : eq_desc
どうやら、最後の砦は eq_desc だったらしい。
eq_descの第2引数の使い方を間違っていたようだ。
CodeGeneratorの対応する関数を見ると・・・
void code_eq_desc (char descriptor_name[],int arity,int a_offset) { INSTRUCTION_GRAPH graph_1,graph_2,graph_3,graph_4; LABEL *descriptor; descriptor=enter_label (descriptor_name,DATA_LABEL); graph_1=s_get_a (a_offset); #ifndef M68000 graph_2=g_load_id (0,graph_1); #else graph_2=g_load_des_id (DESCRIPTOR_OFFSET,graph_1); #endif graph_3=g_load_des_i (descriptor,arity); graph_4=g_cmp_eq (graph_3,graph_2); s_push_b (graph_4); }
g_load_des_i (descriptor,arity); で、Descriptorから ID を取り出すために arity を使っているらしい。
CleanJでは、何に対応するのか?
-
-
- -
-
ひとまず、CleanNodeで、
public static boolean eq_desc(CleanDescriptor d, int n, Object o) throws CleanException { return d == getDesc(o);// && d.eq_arity(n,getData(o)); }
のように、コメントアウトして対応した。