fix for the EAM internal function that shows abstract machine code

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1597 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
rslopes 2006-04-12 17:26:14 +00:00
parent f116d8b854
commit 307a132aa6
2 changed files with 160 additions and 158 deletions

View File

@ -65,13 +65,12 @@ struct EAM_Global *eamGlobal=&EAMGlobal;
#define INLINE #define INLINE
#define DIRECT_JUMP 0 #define DIRECT_JUMP 0
void break_top(void); void break_top(void) { }; void break_top(void); void break_top(void) { };
void break_debug(void); void break_debug(int);
void break_debug(void) { static int contador=1; void break_debug(int conta) {
#if Debug_Dump_State & 4 #if Debug_Dump_State & 4
dump_eam_state(); dump_eam_state();
#endif #endif
printf("(%d %1d) ->", contador++,beam_Mode); if (Debug!=-1 && conta>Debug*100) {printf("exit por contador>debug\n"); exit(1); }
if (Debug!=-1 && contador>Debug*100) {printf("exit por contador>debug\n"); exit(1); }
}; };
#endif #endif
@ -1440,8 +1439,12 @@ static void *OpAddress[]= {
&&p_arg, &&p_arg,
&&p_functor &&p_functor
}; };
#if Debug
static int contador=1;
#endif
Cell code2start[]={_prepare_calls,1,0,_call_op,0,0}; Cell code2start[]={_prepare_calls,1,0,_call_op,0,0};
if ((long) initPred==2) { /* retry from call eam(goal) */ if ((long) initPred==2) { /* retry from call eam(goal) */
goto fail; goto fail;
} else if ((long) initPred==1) { /* first time call eam(goal) */ } else if ((long) initPred==1) { /* first time call eam(goal) */
@ -1527,14 +1530,14 @@ if (1) { int i; /* criar mais um nivel acima do top para o caso de haver variav
exit_eam: exit_eam:
#if Debug #if Debug
break_debug(); printf("%5d->(%3d) exit_eam ->",contador++, (int) *beam_pc);
printf("(%3d) exit_eam ->", (int) *beam_pc); break_debug(contador);
#endif #endif
wake: wake:
#if Debug #if Debug
break_debug(); printf("%5d->Trying WAKE and_box on suspension \n",contador++);
printf("Trying WAKE and_box on suspension \n"); break_debug(contador);
#endif #endif
if (verify_externals(beam_ABX)==0) goto fail_verify_externals; if (verify_externals(beam_ABX)==0) goto fail_verify_externals;
if (beam_ABX->externals==NULL) { if (beam_ABX->externals==NULL) {
@ -1552,9 +1555,9 @@ break_debug();
top_tree: top_tree:
#if Debug #if Debug
break_debug(); printf("%5d->I'm on top of the Tree (maybe exit or look for suspended alternatives) \n",contador++);
printf("I'm on top of the Tree (maybe exit or look for suspended alternatives) \n"); break_debug(contador);
break_top(); break_top();
#endif #endif
#if GARBAGE_COLLECTOR #if GARBAGE_COLLECTOR
@ -1615,8 +1618,8 @@ break_debug();
if (beam_nr_alternative->state & (WAKE)) goto wake; if (beam_nr_alternative->state & (WAKE)) goto wake;
if (beam_OBX->nr_all_alternatives>1) { if (beam_OBX->nr_all_alternatives>1) {
#if Debug #if Debug
break_debug(); printf("%5d->Trying Fork in suspended and_box \n",contador++);
printf("Trying Fork in suspended and_box \n"); break_debug(contador);
#endif #endif
/* pickup the left most alternative instead */ /* pickup the left most alternative instead */
split: split:
@ -1640,8 +1643,7 @@ break_debug();
proceed: proceed:
#if Debug #if Debug
break_debug(); printf("%5d->proceed... \n",contador++);
printf("proceed... \n");
#endif #endif
if (beam_USE_SAME_ANDBOX!=NULL) { /* was only one alternative */ if (beam_USE_SAME_ANDBOX!=NULL) { /* was only one alternative */
@ -1656,8 +1658,8 @@ break_debug();
success: success:
#if Debug #if Debug
break_debug(); printf("%5d->SUCCESS for call %p in level %d \n",contador++, beam_nr_call, beam_ABX->level );
printf("SUCCESS for call %p in level %d \n", beam_nr_call, beam_ABX->level ); break_debug(contador);
#endif #endif
/* FOUND SOLUTION -> ALL_SOLUTIONS */ /* FOUND SOLUTION -> ALL_SOLUTIONS */
//if ((beam_ABX->side_effects & WRITE) && beam_OBX->nr_all_alternatives>1) //if ((beam_ABX->side_effects & WRITE) && beam_OBX->nr_all_alternatives>1)
@ -1691,8 +1693,8 @@ break_debug();
next_call: next_call:
#if Debug #if Debug
break_debug(); printf("%5d->Searching for a next call in and_box... \n",contador++);
printf("Searching for a next call in and_box... \n"); break_debug(contador);
#endif #endif
#if GARBAGE_COLLECTOR #if GARBAGE_COLLECTOR
@ -1785,8 +1787,8 @@ break_debug();
fail_head: fail_head:
fail: fail:
#if Debug #if Debug
break_debug(); printf("%5d->fail... \n",contador++);
printf("fail... \n"); break_debug(contador);
#endif #endif
fail_verify_externals: fail_verify_externals:
@ -1814,8 +1816,8 @@ break_debug();
next_alternative: next_alternative:
#if Debug #if Debug
break_debug(); printf("%5d->Searching for a next alternative in or_box... \n",contador++);
printf("Searching for a next alternative in or_box... \n"); break_debug(contador);
#endif #endif
#if GARBAGE_COLLECTOR #if GARBAGE_COLLECTOR
@ -1868,8 +1870,8 @@ break_debug();
unique_alternative: unique_alternative:
#if Debug #if Debug
break_debug(); printf("%5d->Unique alternative, Does Promotion on and-box\n",contador++);
printf("Unique alternative, Does Promotion on and-box\n"); break_debug(contador);
#endif #endif
#if GARBAGE_COLLECTOR #if GARBAGE_COLLECTOR
@ -1998,8 +2000,8 @@ break_debug();
prepare_tries: prepare_tries:
#if Debug #if Debug
break_debug(); printf("%5d->prepare_tries for %d clauses with arity=%d \n",contador++,(int) arg1,(int) arg2);
printf("prepare_tries for %d clauses with arity=%d \n",(int) arg1,(int) arg2); break_debug(contador);
#endif #endif
if (!arg1) goto fail; if (!arg1) goto fail;
{ register int nr; { register int nr;
@ -2058,8 +2060,8 @@ break_debug();
try_me: try_me:
beam_nr_alternative->args=NULL; beam_nr_alternative->args=NULL;
#if Debug #if Debug
break_debug(); printf("%5d->Create AND_BOX for the %dth clause of predicate %s/%d (Yvars=%d) \n",contador++,(int) arg4,((struct Clauses *)arg1)->predi->name,(int) arg2,(int) arg3);
printf("Create AND_BOX for the %dth clause of predicate %s/%d (Yvars=%d) \n",(int) arg4,((struct Clauses *)arg1)->predi->name,(int) arg2,(int) arg3); break_debug(contador);
#endif #endif
if (beam_OBX->nr_all_alternatives>1 || beam_OBX->parent->parent==NULL) { if (beam_OBX->nr_all_alternatives>1 || beam_OBX->parent->parent==NULL) {
@ -2112,8 +2114,8 @@ break_debug();
prepare_calls: prepare_calls:
#if Debug #if Debug
break_debug(); printf("%5d->prepare_calls %d\n",contador++,(int) arg1);
printf("prepare_calls %d\n",(int) arg1); break_debug(contador);
#endif #endif
if (beam_USE_SAME_ANDBOX!=NULL) { /* only one alternative */ if (beam_USE_SAME_ANDBOX!=NULL) { /* only one alternative */
register int nr; register int nr;
@ -2191,8 +2193,8 @@ break_debug();
scheduler: scheduler:
#if Debug #if Debug
break_debug(); printf("%5d->Scheduler... \n",contador++);
printf("Scheduler... \n"); break_debug(contador);
#endif #endif
#if Debug_Dump_State #if Debug_Dump_State
dump_eam_state(); dump_eam_state();
@ -2212,8 +2214,8 @@ break_debug();
suspend: suspend:
#if Debug #if Debug
break_debug(); printf("%5d->SUSPEND on alternative %p\n",contador++,beam_nr_alternative);
printf("SUSPEND on alternative %p\n",beam_nr_alternative); break_debug(contador);
#endif #endif
beam_OBX=beam_ABX->parent; beam_OBX=beam_ABX->parent;
{ struct EXTERNAL_VAR *e; { struct EXTERNAL_VAR *e;
@ -2250,8 +2252,8 @@ break_debug();
call: call:
#if Debug #if Debug
break_debug(); printf("%5d->call %s/%d \n",contador++,((PredEntry *) arg1)->beamTable->name,(int) ((PredEntry *) arg1)->beamTable->arity);
printf("call %s/%d \n",((PredEntry *) arg1)->beamTable->name,(int) ((PredEntry *) arg1)->beamTable->arity); break_debug(contador);
#endif #endif
beam_ES=((PredEntry *) arg1)->beamTable->eager_split; beam_ES=((PredEntry *) arg1)->beamTable->eager_split;
@ -2371,8 +2373,8 @@ break_debug();
safe_call: safe_call:
#if Debug #if Debug
break_debug(); printf("%5d->safe_call 0x%lX X1=%d (0x%lX) ,X2=%d (0x%lX) \n",contador++,(unsigned long) arg1,(int) beam_X[1],(unsigned long) beam_X[1],(int) beam_X[2],(unsigned long) beam_X[2]);
printf("safe_call 0x%lX X1=%d (0x%lX) ,X2=%d (0x%lX) \n",(unsigned long) arg1,(int) beam_X[1],(unsigned long) beam_X[1],(int) beam_X[2],(unsigned long) beam_X[2]); break_debug(contador);
#endif #endif
beam_S=(Cell *) arg1; beam_S=(Cell *) arg1;
beam_S=(Cell *) (* ((int long (*)(void)) beam_S))(); beam_S=(Cell *) (* ((int long (*)(void)) beam_S))();
@ -2385,8 +2387,8 @@ break_debug();
safe_call_unary: safe_call_unary:
#if Debug #if Debug
break_debug(); printf("%5d->safe_call_unary 0x%lX X1=%d (0x%lX) ,X2=%d (0x%lX) \n",contador++,(unsigned long) arg1,(int) beam_X[1],(unsigned long) beam_X[1],(int) beam_X[2],(unsigned long) beam_X[2]);
printf("safe_call_unary 0x%lX X1=%d (0x%lX) ,X2=%d (0x%lX) \n",(unsigned long) arg1,(int) beam_X[1],(unsigned long) beam_X[1],(int) beam_X[2],(unsigned long) beam_X[2]); break_debug(contador);
#endif #endif
beam_S=(Cell *) arg1; beam_S=(Cell *) arg1;
beam_S=(Cell *) (* ((int long (*)(Term)) beam_S))(deref(beam_X[1])); beam_S=(Cell *) (* ((int long (*)(Term)) beam_S))(deref(beam_X[1]));
@ -2399,8 +2401,8 @@ break_debug();
safe_call_binary: safe_call_binary:
#if Debug #if Debug
break_debug(); printf("%5d->safe_call_binary 0x%lX X1=%d (0x%lX) ,X2=%d (0x%lX) \n",contador++,(unsigned long) arg1,(int) beam_X[1],(unsigned long) beam_X[1],(int) beam_X[2],(unsigned long) beam_X[2]);
printf("safe_call_binary 0x%lX X1=%d (0x%lX) ,X2=%d (0x%lX) \n",(unsigned long) arg1,(int) beam_X[1],(unsigned long) beam_X[1],(int) beam_X[2],(unsigned long) beam_X[2]); break_debug(contador);
#endif #endif
beam_S=(Cell *) arg1; beam_S=(Cell *) arg1;
beam_S=(Cell *) (* ((int long (*)(Term, Term)) beam_S))(deref(beam_X[1]),deref(beam_X[2])); beam_S=(Cell *) (* ((int long (*)(Term, Term)) beam_S))(deref(beam_X[1]),deref(beam_X[2]));
@ -2414,8 +2416,8 @@ break_debug();
direct_safe_call: direct_safe_call:
#if Debug #if Debug
break_debug(); printf("%5d->direct_safe_call %p X1=%d,X2=%d \n",contador++,(void *) arg1,(int) beam_X[1],(int) beam_X[2]);
printf("direct_safe_call %p X1=%d,X2=%d \n",(void *) arg1,(int) beam_X[1],(int) beam_X[2]); break_debug(contador);
#endif #endif
beam_S=(Cell *) arg1; beam_S=(Cell *) arg1;
beam_S=(Cell *) (* ((int long (*)(void)) beam_S))(); beam_S=(Cell *) (* ((int long (*)(void)) beam_S))();
@ -2426,8 +2428,8 @@ break_debug();
direct_safe_call_unary: direct_safe_call_unary:
#if Debug #if Debug
break_debug(); printf("%5d->direct_safe_call_unary %p X1=%d,X2=%d \n",contador++,(void *) arg1,(int) beam_X[1],(int) beam_X[2]);
printf("direct_safe_call_unary %p X1=%d,X2=%d \n",(void *) arg1,(int) beam_X[1],(int) beam_X[2]); break_debug(contador);
#endif #endif
beam_S=(Cell *) arg1; beam_S=(Cell *) arg1;
beam_S=(Cell *) (* ((int long (*)(Term)) beam_S))(deref(beam_X[1])); beam_S=(Cell *) (* ((int long (*)(Term)) beam_S))(deref(beam_X[1]));
@ -2437,8 +2439,8 @@ break_debug();
direct_safe_call_binary: direct_safe_call_binary:
#if Debug #if Debug
break_debug(); printf("%5d->direct_safe_call_binary %p X1=%d,X2=%d \n",contador++,(void *) arg1,(int) beam_X[1],(int) beam_X[2]);
printf("direct_safe_call_binary %p X1=%d,X2=%d \n",(void *) arg1,(int) beam_X[1],(int) beam_X[2]); break_debug(contador);
#endif #endif
beam_S=(Cell *) arg1; beam_S=(Cell *) arg1;
beam_S=(Cell *) (* ((int long (*)(Term,Term)) beam_S))(deref(beam_X[1]),deref(beam_X[2])); beam_S=(Cell *) (* ((int long (*)(Term,Term)) beam_S))(deref(beam_X[1]),deref(beam_X[2]));
@ -2448,8 +2450,8 @@ break_debug();
skip_while_var: skip_while_var:
#if Debug #if Debug
break_debug(); printf("%5d->Skip_while_var on call %p\n",contador++, beam_nr_call);
printf("Skip_while_var on call %p\n", beam_nr_call); break_debug(contador);
#endif #endif
if (exists_var_in((Cell *) beam_X[1])) { if (exists_var_in((Cell *) beam_X[1])) {
beam_ABX->suspended=addto_suspensions_list(beam_ABX,VAR_SUSPENSION); beam_ABX->suspended=addto_suspensions_list(beam_ABX,VAR_SUSPENSION);
@ -2461,8 +2463,8 @@ break_debug();
wait_while_var: wait_while_var:
#if Debug #if Debug
break_debug(); printf("%5d->Wait_while_var on call %p\n",contador++, beam_nr_call);
printf("Wait_while_var on call %p\n", beam_nr_call); break_debug(contador);
#endif #endif
if (exists_var_in((Cell *) beam_X[1])) { if (exists_var_in((Cell *) beam_X[1])) {
beam_ABX->suspended=addto_suspensions_list(beam_ABX,VAR_SUSPENSION); beam_ABX->suspended=addto_suspensions_list(beam_ABX,VAR_SUSPENSION);
@ -2475,8 +2477,8 @@ break_debug();
force_wait: force_wait:
#if Debug #if Debug
break_debug(); printf("%5d->Force Waiting on call %p\n",contador++, beam_nr_call);
printf("Force Waiting on call %p\n", beam_nr_call); break_debug(contador);
#endif #endif
/* we didn't get to created a or_box */ /* we didn't get to created a or_box */
@ -2493,8 +2495,8 @@ break_debug();
write_call: write_call:
#if Debug #if Debug
break_debug(); printf("%5d->write_call\n",contador++);
printf("write_call\n"); break_debug(contador);
#endif #endif
#if USE_LEFTMOST #if USE_LEFTMOST
if (!is_leftmost(beam_ABX,beam_nr_call)) { if (!is_leftmost(beam_ABX,beam_nr_call)) {
@ -2521,8 +2523,8 @@ break_debug();
is_call: is_call:
#if Debug #if Debug
break_debug(); printf("%5d->is_call\n",contador++);
printf("is_call\n"); break_debug(contador);
#endif #endif
{ {
Cell *_DR; Cell *_DR;
@ -2541,8 +2543,8 @@ break_debug();
equal_call: equal_call:
#if Debug #if Debug
break_debug(); printf("%5d->equal_call\n",contador++);
printf("equal_call\n"); break_debug(contador);
#endif #endif
beam_nr_call=remove_call_from_andbox(beam_nr_call,beam_ABX); beam_nr_call=remove_call_from_andbox(beam_nr_call,beam_ABX);
if (beam_ABX->externals!=NULL) { if (beam_ABX->externals!=NULL) {
@ -2557,8 +2559,8 @@ break_debug();
pop: pop:
#if Debug #if Debug
break_debug(); printf("%5d->pop %d \n",contador++,(int) arg1);
printf("pop %d \n",(int) arg1); break_debug(contador);
#endif #endif
if (arg1>1) { if (arg1>1) {
beam_sp+=arg1>>2; beam_sp+=arg1>>2;
@ -2573,8 +2575,8 @@ break_debug();
do_nothing: do_nothing:
#if Debug #if Debug
break_debug(); printf("%5d->do_nothing \n",contador++);
printf("do_nothing \n"); break_debug(contador);
#endif #endif
beam_pc++; beam_pc++;
execute_next(); execute_next();
@ -2582,8 +2584,8 @@ break_debug();
get_var_X: get_var_X:
#if Debug #if Debug
break_debug(); printf("%5d->get_var_X X%d=X%d \n",contador++,(int) arg2,(int) arg1);
printf("get_var_X X%d=X%d \n",(int) arg2,(int) arg1); break_debug(contador);
#endif #endif
beam_X[arg2]=beam_X[arg1]; beam_X[arg2]=beam_X[arg1];
@ -2592,8 +2594,8 @@ break_debug();
get_var_Y: get_var_Y:
#if Debug #if Debug
break_debug(); printf("%5d->get_var_Y Y%d=X%d \n",contador++,(int) arg2,(int) arg1);
printf("get_var_Y Y%d=X%d \n",(int) arg2,(int) arg1); break_debug(contador);
#endif #endif
beam_varlocals[arg2]=beam_X[arg1]; beam_varlocals[arg2]=beam_X[arg1];
#if !Fast_go #if !Fast_go
@ -2609,8 +2611,8 @@ break_debug();
get_val_X: get_val_X:
#if Debug #if Debug
break_debug(); printf("%5d->get_val_X X%d,X%d \n",contador++,(int) arg1,(int) arg2);
printf("get_val_X X%d,X%d \n",(int) arg1,(int) arg2); break_debug(contador);
#endif #endif
{ register Cell *_DR, *_DR1; { register Cell *_DR, *_DR1;
_DR=(Cell *) deref(beam_X[arg1]); _DR=(Cell *) deref(beam_X[arg1]);
@ -2637,8 +2639,8 @@ break_debug();
get_val_Y: get_val_Y:
#if Debug #if Debug
break_debug(); printf("%5d->get_val_Y X%d,Y%d \n",contador++,(int) arg1,(int) arg2);
printf("get_val_Y X%d,Y%d \n",(int) arg1,(int) arg2); break_debug(contador);
#endif #endif
{ register Cell *_DR, *_DR1; { register Cell *_DR, *_DR1;
_DR=(Cell *) deref(beam_X[arg1]); _DR=(Cell *) deref(beam_X[arg1]);
@ -2665,8 +2667,8 @@ break_debug();
get_atom: get_atom:
#if Debug #if Debug
break_debug(); printf("%5d->get_atom X%d, 0x%lX\n",contador++,(int) arg1,(unsigned long) arg2);
printf("get_atom X%d, 0x%lX\n",(int) arg1,(unsigned long) arg2); break_debug(contador);
#endif #endif
{ register Cell *_DR; { register Cell *_DR;
_DR=(Cell *) deref(beam_X[arg1]); _DR=(Cell *) deref(beam_X[arg1]);
@ -2682,8 +2684,8 @@ break_debug();
get_list: get_list:
#if Debug #if Debug
break_debug(); printf("%5d->get_list X%d\n",contador++,(int) arg1);
printf("get_list X%d\n",(int) arg1); break_debug(contador);
#endif #endif
{ register Cell *_DR, *_DR1; { register Cell *_DR, *_DR1;
_DR=(Cell *) deref(beam_X[arg1]); _DR=(Cell *) deref(beam_X[arg1]);
@ -2707,8 +2709,8 @@ break_debug();
get_struct: get_struct:
#if Debug #if Debug
break_debug(); printf("%5d->get_struct X%d, 0x%lX/%d\n",contador++,(int) arg1,(unsigned long) arg2,(int) arg3);
printf("get_struct X%d, 0x%lX/%d\n",(int) arg1,(unsigned long) arg2,(int) arg3); break_debug(contador);
#endif #endif
{ register Cell *_DR, *_DR1; { register Cell *_DR, *_DR1;
@ -2736,8 +2738,8 @@ break_debug();
unify_void: unify_void:
#if Debug #if Debug
break_debug(); printf("%5d->unify_void\n",contador++);
printf("unify_void\n"); break_debug(contador);
#endif #endif
if (beam_Mode==WRITE) { if (beam_Mode==WRITE) {
*beam_S=(Cell) request_permVar(beam_ABX); *beam_S=(Cell) request_permVar(beam_ABX);
@ -2749,8 +2751,8 @@ break_debug();
unify_local_Y: unify_local_Y:
#if Debug #if Debug
break_debug(); printf("%5d->unify_local_Y Y%d \n",contador++,(int) arg1);
printf("unify_local_Y Y%d \n",(int) arg1); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
@ -2793,8 +2795,8 @@ break_debug();
unify_local_X: unify_local_X:
#if Debug #if Debug
break_debug(); printf("%5d->unify_local_X X%d \n",contador++,(int) arg1);
printf("unify_local_X X%d \n",(int) arg1); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
register Cell *_DR, *_DR1; register Cell *_DR, *_DR1;
@ -2837,8 +2839,8 @@ break_debug();
unify_val_Y: unify_val_Y:
#if Debug #if Debug
break_debug(); printf("%5d->unify_val_Y Y%d \n",contador++,(int) arg1);
printf("unify_val_Y Y%d \n",(int) arg1); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
@ -2875,8 +2877,8 @@ break_debug();
unify_val_X: unify_val_X:
#if Debug #if Debug
break_debug(); printf("%5d->unify_val_X X%d \n",contador++,(int) arg1);
printf("unify_val_X X%d \n",(int) arg1); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
register Cell *_DR, *_DR1; register Cell *_DR, *_DR1;
@ -2911,8 +2913,8 @@ break_debug();
unify_var_X: unify_var_X:
#if Debug #if Debug
break_debug(); printf("%5d->unify_var_X X%d=*S \n",contador++,(int) arg1);
printf("unify_var_X X%d=*S \n",(int) arg1); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
beam_X[arg1]=*(beam_S++); beam_X[arg1]=*(beam_S++);
@ -2928,8 +2930,8 @@ break_debug();
unify_var_Y: unify_var_Y:
#if Debug #if Debug
break_debug(); printf("%5d->unify_var_Y Y%d \n",contador++,(int) arg1);
printf("unify_var_Y Y%d \n",(int) arg1); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
beam_varlocals[arg1]=*(beam_S++); beam_varlocals[arg1]=*(beam_S++);
@ -2946,8 +2948,8 @@ break_debug();
unify_last_atom: unify_last_atom:
unify_atom: unify_atom:
#if Debug #if Debug
break_debug(); printf("%5d->unify_atom 0x%lX \n",contador++,(unsigned long) arg1);
printf("unify_atom 0x%lX \n",(unsigned long) arg1); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
register Cell *_DR; register Cell *_DR;
@ -2970,8 +2972,8 @@ break_debug();
unify_list: unify_list:
#if Debug #if Debug
break_debug(); printf("%5d->unify_list \n",contador++);
printf("unify_list \n"); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
register Cell *_DR, *_DR1; register Cell *_DR, *_DR1;
@ -3010,8 +3012,8 @@ break_debug();
unify_last_list: unify_last_list:
#if Debug #if Debug
break_debug(); printf("%5d->unify_last_list \n",contador++);
printf("unify_last_list \n"); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
register Cell *_DR, *_DR1; register Cell *_DR, *_DR1;
@ -3043,8 +3045,8 @@ break_debug();
unify_struct: unify_struct:
#if Debug #if Debug
break_debug(); printf("%5d->unify_struct 0x%lX,%d \n",contador++,(unsigned long) arg1,(int) arg2);
printf("unify_struct 0x%lX,%d \n",(unsigned long) arg1,(int) arg2); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
register Cell *_DR, *_DR1; register Cell *_DR, *_DR1;
@ -3087,8 +3089,8 @@ break_debug();
unify_last_struct: unify_last_struct:
#if Debug #if Debug
break_debug(); printf("%5d->unify_last_struct 0x%lX, %d \n",contador++,(unsigned long) arg1,(int) arg2);
printf("unify_last_struct 0x%lX, %d \n",(unsigned long) arg1,(int) arg2); break_debug(contador);
#endif #endif
if (beam_Mode==READ) { if (beam_Mode==READ) {
register Cell *_DR, *_DR1; register Cell *_DR, *_DR1;
@ -3124,8 +3126,8 @@ break_debug();
put_var_X: put_var_X:
#if Debug #if Debug
break_debug(); printf("%5d->put_var_X X%d,X%d \n",contador++,(int) arg1,(int) arg2);
printf("put_var_X X%d,X%d \n",(int) arg1,(int) arg2); break_debug(contador);
#endif #endif
beam_X[arg1]=(Cell) beam_H; beam_X[arg1]=(Cell) beam_H;
beam_X[arg2]=(Cell) beam_H; beam_X[arg2]=(Cell) beam_H;
@ -3138,8 +3140,8 @@ break_debug();
put_val_X: put_val_X:
#if Debug #if Debug
break_debug(); printf("%5d->put_val_X X%d,X%d \n",contador++,(int) arg1,(int) arg2);
printf("put_val_X X%d,X%d \n",(int) arg1,(int) arg2); break_debug(contador);
#endif #endif
beam_X[arg1]=beam_X[arg2]; beam_X[arg1]=beam_X[arg2];
beam_pc+=3; beam_pc+=3;
@ -3148,8 +3150,8 @@ break_debug();
put_var_P: put_var_P:
#if Debug #if Debug
break_debug(); printf("%5d->put_var_P X%d,Y%d \n",contador++,(int) arg1,(int) arg2);
printf("put_var_P X%d,Y%d \n",(int) arg1,(int) arg2); break_debug(contador);
#endif #endif
if (isvar(beam_varlocals[arg2]) && !is_perm_var((Cell *) beam_varlocals[arg2])) if (isvar(beam_varlocals[arg2]) && !is_perm_var((Cell *) beam_varlocals[arg2]))
beam_varlocals[arg2]=(Cell) request_permVar(beam_ABX); beam_varlocals[arg2]=(Cell) request_permVar(beam_ABX);
@ -3160,8 +3162,8 @@ break_debug();
put_var_Y: put_var_Y:
/* /*
#if Debug #if Debug
break_debug(); printf("%5d->put_var_Y X%d,Y%d \n",contador++,(int) arg1,(int) arg2);
printf("put_var_Y X%d,Y%d \n",(int) arg1,(int) arg2); break_debug(contador);
#endif #endif
{ register Cell *a; { register Cell *a;
@ -3173,8 +3175,8 @@ break_debug();
*/ */
put_val_Y: put_val_Y:
#if Debug #if Debug
break_debug(); printf("%5d->put_val_Y X%d,Y%d \n",contador++,(int) arg1,(int) arg2);
printf("put_val_Y X%d,Y%d \n",(int) arg1,(int) arg2); break_debug(contador);
#endif #endif
beam_X[arg1]=beam_varlocals[arg2]; beam_X[arg1]=beam_varlocals[arg2];
beam_pc+=3; beam_pc+=3;
@ -3182,8 +3184,8 @@ break_debug();
put_unsafe: put_unsafe:
#if Debug #if Debug
break_debug(); printf("%5d->put_unsafe X%d, Y%d \n",contador++,(int) arg1,(int) arg2);
printf("put_unsafe X%d, Y%d \n",(int) arg1,(int) arg2); break_debug(contador);
#endif #endif
beam_X[arg1]=beam_varlocals[arg2]; beam_X[arg1]=beam_varlocals[arg2];
beam_pc+=3; beam_pc+=3;
@ -3192,8 +3194,8 @@ break_debug();
put_atom: put_atom:
#if Debug #if Debug
break_debug(); printf("%5d->put_atom X%d, 0x%lX \n",contador++,(int) arg1,(unsigned long) arg2);
printf("put_atom X%d, 0x%lX \n",(int) arg1,(unsigned long) arg2); break_debug(contador);
#endif #endif
beam_X[arg1]=arg2; beam_X[arg1]=arg2;
beam_pc+=3; beam_pc+=3;
@ -3201,8 +3203,8 @@ break_debug();
put_list: put_list:
#if Debug #if Debug
break_debug(); printf("%5d->put_list X%d \n",contador++,(int) arg1);
printf("put_list X%d \n",(int) arg1); break_debug(contador);
#endif #endif
{ register Cell *_DR1; { register Cell *_DR1;
@ -3216,8 +3218,8 @@ break_debug();
put_struct: put_struct:
#if Debug #if Debug
break_debug(); printf("%5d->put_struct X%d, 0x%lX, %d \n",contador++,(int) arg1,(unsigned long) arg2,(int) arg3);
printf("put_struct X%d, 0x%lX, %d \n",(int) arg1,(unsigned long) arg2,(int) arg3); break_debug(contador);
#endif #endif
{ register Cell _DR1; { register Cell _DR1;
@ -3232,8 +3234,8 @@ break_debug();
write_var_X: write_var_X:
#if Debug #if Debug
break_debug(); printf("%5d->write_var_X X%d \n",contador++,(int) arg1);
printf("write_var_X X%d \n",(int) arg1); break_debug(contador);
#endif #endif
*beam_S=(Cell) request_permVar(beam_ABX); *beam_S=(Cell) request_permVar(beam_ABX);
beam_X[arg1]=(Cell) beam_S; beam_X[arg1]=(Cell) beam_S;
@ -3243,8 +3245,8 @@ break_debug();
write_var_Y: write_var_Y:
#if Debug #if Debug
break_debug(); printf("%5d->write_var_Y Y%d \n",contador++,(int) arg1);
printf("write_var_Y Y%d \n",(int) arg1); break_debug(contador);
#endif #endif
{ Cell *c; { Cell *c;
c=&beam_varlocals[arg1]; c=&beam_varlocals[arg1];
@ -3258,8 +3260,8 @@ break_debug();
write_var_P: write_var_P:
#if Debug #if Debug
break_debug(); printf("%5d->write_var_P Y%d \n",contador++,(int) arg1);
printf("write_var_P Y%d \n",(int) arg1); break_debug(contador);
#endif #endif
if (isvar(beam_varlocals[arg1]) && !is_perm_var((Cell *) beam_varlocals[arg1])) if (isvar(beam_varlocals[arg1]) && !is_perm_var((Cell *) beam_varlocals[arg1]))
beam_varlocals[arg1]=(Cell) request_permVar(beam_ABX); beam_varlocals[arg1]=(Cell) request_permVar(beam_ABX);
@ -3272,8 +3274,8 @@ break_debug();
write_local_X: write_local_X:
write_val_X: write_val_X:
#if Debug #if Debug
break_debug(); printf("%5d->write_val_X X%d (or write_local)\n",contador++,(int) arg1);
printf("write_val_X X%d (or write_local)\n",(int) arg1); break_debug(contador);
#endif #endif
*(beam_S)=beam_X[arg1]; *(beam_S)=beam_X[arg1];
beam_S++; beam_S++;
@ -3292,8 +3294,8 @@ break_debug();
write_void: write_void:
#if Debug #if Debug
break_debug(); printf("%5d->write_void \n",contador++);
printf("write_void \n"); break_debug(contador);
#endif #endif
*beam_S=(Cell) request_permVar(beam_ABX); *beam_S=(Cell) request_permVar(beam_ABX);
beam_S++; beam_S++;
@ -3301,8 +3303,8 @@ break_debug();
execute_next(); execute_next();
write_atom: write_atom:
#if Debug #if Debug
break_debug(); printf("%5d->write_atom 0x%lX \n",contador++,(unsigned long) arg1);
printf("write_atom 0x%lX \n",(unsigned long) arg1); break_debug(contador);
#endif #endif
*(beam_S)=arg1; *(beam_S)=arg1;
beam_S++; beam_S++;
@ -3312,8 +3314,8 @@ break_debug();
write_list: write_list:
#if Debug #if Debug
break_debug(); printf("%5d->write_list \n",contador++);
printf("write_list \n"); break_debug(contador);
#endif #endif
{ register Cell *_DR1; { register Cell *_DR1;
@ -3328,8 +3330,8 @@ break_debug();
write_last_list: write_last_list:
#if Debug #if Debug
break_debug(); printf("%5d->write_last_list \n",contador++);
printf("write_last_list \n"); break_debug(contador);
#endif #endif
{ register Cell *_DR1; { register Cell *_DR1;
@ -3343,8 +3345,8 @@ break_debug();
write_struct: write_struct:
#if Debug #if Debug
break_debug(); printf("%5d->write_struct 0x%lX, %d \n",contador++,(unsigned long) arg1,(int) arg2);
printf("write_struct 0x%lX, %d \n",(unsigned long) arg1,(int) arg2); break_debug(contador);
#endif #endif
{ register Cell *_DR1; { register Cell *_DR1;
@ -3360,8 +3362,8 @@ break_debug();
write_last_struct: write_last_struct:
#if Debug #if Debug
break_debug(); printf("%5d->write_last_struct 0x%lX, %d \n",contador++,(unsigned long) arg1,(int) arg2);
printf("write_last_struct 0x%lX, %d \n",(unsigned long) arg1,(int) arg2); break_debug(contador);
#endif #endif
{ register Cell *_DR1; { register Cell *_DR1;
_DR1=(Cell *) absappl((Cell) beam_H); /* SaveExpression in _DR1*/ _DR1=(Cell *) absappl((Cell) beam_H); /* SaveExpression in _DR1*/
@ -3375,8 +3377,8 @@ break_debug();
cut: cut:
#if Debug #if Debug
break_debug(); printf("%5d->cut na alternativa %pª de %d \n",contador++,beam_ABX->nr_alternative, beam_ABX->parent->nr_all_alternatives);
printf("cut na alternativa %pª de %d \n",beam_ABX->nr_alternative, beam_ABX->parent->nr_all_alternatives); break_debug(contador);
#endif #endif
beam_OBX=beam_ABX->parent; beam_OBX=beam_ABX->parent;
{ {
@ -3421,8 +3423,8 @@ break_debug();
commit: commit:
#if Debug #if Debug
break_debug(); printf("%5d->commit na alternativa %pª de %d \n",contador++,beam_ABX->nr_alternative, beam_ABX->parent->nr_all_alternatives);
printf("commit na alternativa %pª de %d \n",beam_ABX->nr_alternative, beam_ABX->parent->nr_all_alternatives); break_debug(contador);
#endif #endif
beam_OBX=beam_ABX->parent; beam_OBX=beam_ABX->parent;
{ {
@ -3469,8 +3471,8 @@ break_debug();
jump: jump:
#if Debug #if Debug
break_debug(); printf("%5d->jump inst %ld\n",contador++,(long int) arg1);
printf("jump inst %ld\n",(long int) arg1); break_debug(contador);
#endif #endif
beam_pc=(Cell *) arg1; beam_pc=(Cell *) arg1;
execute_next(); execute_next();
@ -3478,8 +3480,8 @@ break_debug();
save_pair_Y: save_pair_Y:
#if Debug #if Debug
break_debug(); printf("%5d->save_pair Y%ld\n",contador++,(long int) arg1);
printf("save_pair Y%ld\n",(long int) arg1); break_debug(contador);
#endif #endif
abort_eam("save_exp no emulador ?????"); abort_eam("save_exp no emulador ?????");
--S; --S;
@ -3490,8 +3492,8 @@ break_debug();
save_appl_Y: save_appl_Y:
#if Debug #if Debug
break_debug(); printf("%5d->save_appl Y%ld\n",contador++,(long int) arg1);
printf("save_appl Y%ld\n",(long int) arg1); break_debug(contador);
#endif #endif
abort_eam("save_exp no emulador ?????"); abort_eam("save_exp no emulador ?????");
--S; --S;
@ -3503,8 +3505,8 @@ break_debug();
save_appl_X: save_appl_X:
#if Debug #if Debug
break_debug(); printf("%5d->save_appl X%ld\n",contador++,(long int) arg1);
printf("save_appl X%ld\n",(long int) arg1); break_debug(contador);
#endif #endif
abort_eam("save_exp no emulador ?????"); abort_eam("save_exp no emulador ?????");
--S; --S;
@ -3515,8 +3517,8 @@ break_debug();
save_pair_X: save_pair_X:
#if Debug #if Debug
break_debug(); printf("%5d->save_pair X%ld\n",contador++,(long int) arg1);
printf("save_pair X%ld\n",(long int) arg1); break_debug(contador);
#endif #endif
abort_eam("save_exp no emulador ?????"); abort_eam("save_exp no emulador ?????");
--S; --S;

View File

@ -256,15 +256,15 @@ int n;
code+=4; code+=4;
break; break;
case(_try_me_op ): case(_try_me_op ):
printf("_try_me_op -> Create AND_BOX for the %dth clause of predicate %s/%d (Yvars=%d) \n",(int) carg4,((struct Clauses *)carg1)->predi->name,(int) carg2,(int) carg3); printf("_try_me_op (not final)\n");
code+=5; code+=5;
break; break;
case(_retry_me_op ): case(_retry_me_op ):
printf("_retry_me_op -> Create AND_BOX for the %dth clause of predicate %s/%d (Yvars=%d) \n",(int) carg4,((struct Clauses *)carg1)->predi->name,(int) carg2,(int) carg3); printf("_retry_me_op (not final)\n");
code+=5; code+=5;
break; break;
case(_trust_me_op ): case(_trust_me_op ):
printf("_trust_me_op -> Create AND_BOX for the %dth clause of predicate %s/%d (Yvars=%d) \n",(int) carg4,((struct Clauses *)carg1)->predi->name,(int) carg2,(int) carg3); printf("_trust_me_op (not final)\n");
code+=5; code+=5;
break; break;
case(_do_nothing_op ): case(_do_nothing_op ):