New update to BEAM engine.
BEAM now uses YAP Indexing (JITI) git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1575 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
@@ -23,10 +23,10 @@ extern int am_to_inst(Cell inst);
|
||||
void eam_showcode(Cell *code)
|
||||
{
|
||||
int n;
|
||||
#define arg1 *(code+1)
|
||||
#define arg2 *(code+2)
|
||||
#define arg3 *(code+3)
|
||||
#define arg4 *(code+4)
|
||||
#define carg1 *(code+1)
|
||||
#define carg2 *(code+2)
|
||||
#define carg3 *(code+3)
|
||||
#define carg4 *(code+4)
|
||||
|
||||
printf("--------------------------------------------------\n");
|
||||
while (1) {
|
||||
@@ -47,39 +47,39 @@ int n;
|
||||
code++;
|
||||
break;
|
||||
case(_prepare_tries):
|
||||
printf("_prepare_tries for %d clauses with arity=%d \n",(int) arg1,(int) arg2);
|
||||
printf("_prepare_tries for %d clauses with arity=%d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_prepare_calls ):
|
||||
printf("_prepare_calls %d \n",(int) arg1);
|
||||
printf("_prepare_calls %d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_get_var_X_op ):
|
||||
printf("_get_var_X_op X%d, X%d\n",(int) arg1,(int) arg2);
|
||||
printf("_get_var_X_op X%d, X%d\n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_get_var_Y_op ):
|
||||
printf("_get_var_Y_op X%d, Y%d\n",(int) arg1,(int) arg2);
|
||||
printf("_get_var_Y_op X%d, Y%d\n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_get_val_X_op ):
|
||||
printf("_get_val_X_op X%d, X%d\n",(int) arg1,(int) arg2);
|
||||
printf("_get_val_X_op X%d, X%d\n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_get_val_Y_op ):
|
||||
printf("_get_val_Y_op X%d, Y%d\n",(int) arg1,(int) arg2);
|
||||
printf("_get_val_Y_op X%d, Y%d\n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_get_atom_op ):
|
||||
printf("_get_atom_op X%d, %d \n",(int) arg1,(int) arg2);
|
||||
printf("_get_atom_op X%d, %d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_get_list_op ):
|
||||
printf("_get_list_op X%d\n",(int) arg1);
|
||||
printf("_get_list_op X%d\n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_get_struct_op ):
|
||||
printf("_get_struct_op X%d, %lX/%d\n",(int) arg1,(unsigned long) arg2,(int) arg3);
|
||||
printf("_get_struct_op X%d, %lX/%d\n",(int) carg1,(unsigned long) carg2,(int) carg3);
|
||||
code+=4;
|
||||
break;
|
||||
case(_unify_void_op ):
|
||||
@@ -87,23 +87,23 @@ int n;
|
||||
code++;
|
||||
break;
|
||||
case(_unify_val_X_op ):
|
||||
printf("_unify_val_X_op X%d\n",(int) arg1);
|
||||
printf("_unify_val_X_op X%d\n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_unify_val_Y_op ):
|
||||
printf("_unify_val_Y_op Y%d\n",(int) arg1);
|
||||
printf("_unify_val_Y_op Y%d\n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_unify_var_X_op ):
|
||||
printf("_unify_var_X_op X%d\n",(int) arg1);
|
||||
printf("_unify_var_X_op X%d\n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_unify_var_Y_op ):
|
||||
printf("_unify_var_Y_op Y%d\n",(int) arg1);
|
||||
printf("_unify_var_Y_op Y%d\n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_unify_atom_op ):
|
||||
printf("_unify_atom_op 0x%lX\n",(unsigned long) arg1);
|
||||
printf("_unify_atom_op 0x%lX\n",(unsigned long) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_unify_list_op ):
|
||||
@@ -115,59 +115,59 @@ int n;
|
||||
code++;
|
||||
break;
|
||||
case(_unify_struct_op ):
|
||||
printf("_unify_struct_op 0x%lX,%d\n",(unsigned long) arg1,(int) arg2);
|
||||
printf("_unify_struct_op 0x%lX,%d\n",(unsigned long) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_unify_last_struct_op ):
|
||||
printf("_unify_last_struct_op 0x%lX,%d\n",(unsigned long) arg1,(int) arg2);
|
||||
printf("_unify_last_struct_op 0x%lX,%d\n",(unsigned long) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_unify_last_atom_op ):
|
||||
printf("_unify_last_atom_op 0x%lX\n",(unsigned long) arg1);
|
||||
printf("_unify_last_atom_op 0x%lX\n",(unsigned long) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_unify_local_X_op ):
|
||||
printf("_unify_local_X_op X%d\n",(int) arg1);
|
||||
printf("_unify_local_X_op X%d\n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_unify_local_Y_op ):
|
||||
printf("_unify_local_Y_op X%d\n",(int) arg1);
|
||||
printf("_unify_local_Y_op X%d\n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_put_var_X_op ):
|
||||
printf("_put_var_X_op X%d,X%d \n",(int) arg1,(int) arg2);
|
||||
printf("_put_var_X_op X%d,X%d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_put_var_Y_op ):
|
||||
printf("_put_var_Y_op X%d,Y%d \n",(int) arg1,(int) arg2);
|
||||
printf("_put_var_Y_op X%d,Y%d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_put_var_P_op ):
|
||||
printf("_put_var_P_op X%d,Y%d \n",(int) arg1,(int) arg2);
|
||||
printf("_put_var_P_op X%d,Y%d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_put_val_X_op ):
|
||||
printf("_put_val_X_op X%d,X%d \n",(int) arg1,(int) arg2);
|
||||
printf("_put_val_X_op X%d,X%d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_put_val_Y_op ):
|
||||
printf("_put_val_Y_op X%d,Y%d \n",(int) arg1,(int) arg2);
|
||||
printf("_put_val_Y_op X%d,Y%d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_put_atom_op ):
|
||||
printf("_put_atom_op X%d, %d \n",(int) arg1,(int) arg2);
|
||||
printf("_put_atom_op X%d, %d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_put_list_op ):
|
||||
printf("_put_list_op X%d \n",(int) arg1);
|
||||
printf("_put_list_op X%d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_put_struct_op ):
|
||||
printf("_put_struct_op X%d,%d,%d \n",(int) arg1,(int) arg2,(int) arg3);
|
||||
printf("_put_struct_op X%d,%d,%d \n",(int) carg1,(int) carg2,(int) carg3);
|
||||
code+=4;
|
||||
break;
|
||||
case(_put_unsafe_op ):
|
||||
printf("_put_unsafe_op X%d, Y%d \n",(int) arg1,(int) arg2);
|
||||
printf("_put_unsafe_op X%d, Y%d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_write_void ):
|
||||
@@ -175,27 +175,27 @@ int n;
|
||||
code++;
|
||||
break;
|
||||
case(_write_var_X_op ):
|
||||
printf("_write_var_X_op X%d \n",(int) arg1);
|
||||
printf("_write_var_X_op X%d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_write_var_Y_op ):
|
||||
printf("_write_var_Y_op Y%d \n",(int) arg1);
|
||||
printf("_write_var_Y_op Y%d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_write_var_P_op ):
|
||||
printf("_write_var_P_op Y%d \n",(int) arg1);
|
||||
printf("_write_var_P_op Y%d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_write_val_X_op ):
|
||||
printf("_write_val_X_op X%d \n",(int) arg1);
|
||||
printf("_write_val_X_op X%d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_write_val_Y_op ):
|
||||
printf("_write_val_Y_op Y%d \n",(int) arg1);
|
||||
printf("_write_val_Y_op Y%d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_write_atom_op ):
|
||||
printf("_write_atom_op %d \n",(int) arg1);
|
||||
printf("_write_atom_op %d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_write_list_op ):
|
||||
@@ -203,7 +203,7 @@ int n;
|
||||
code++;
|
||||
break;
|
||||
case(_write_struct_op ):
|
||||
printf("_write_struct_op %d,%d \n",(int) arg1,(int) arg2);
|
||||
printf("_write_struct_op %d,%d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_write_last_list_op ):
|
||||
@@ -211,15 +211,15 @@ int n;
|
||||
code++;
|
||||
break;
|
||||
case(_write_last_struct_op ):
|
||||
printf("_write_last_struct_op %d,%d \n",(int) arg1,(int) arg2);
|
||||
printf("_write_last_struct_op %d,%d \n",(int) carg1,(int) carg2);
|
||||
code+=3;
|
||||
break;
|
||||
case(_write_local_X_op ):
|
||||
printf("_write_local_X_op X%d \n",(int) arg1);
|
||||
printf("_write_local_X_op X%d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_write_local_Y_op ):
|
||||
printf("_write_local_Y_op Y%d \n",(int) arg1);
|
||||
printf("_write_local_Y_op Y%d \n",(int) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_pop_op ):
|
||||
@@ -227,7 +227,7 @@ int n;
|
||||
code++;
|
||||
break;
|
||||
case(_jump_op ):
|
||||
printf("_jump_op %ld\n",(long int) arg1);
|
||||
printf("_jump_op %ld\n",(long int) carg1);
|
||||
code+=4;
|
||||
break;
|
||||
case(_proceed_op ):
|
||||
@@ -235,36 +235,36 @@ int n;
|
||||
code++;
|
||||
break;
|
||||
case(_call_op ):
|
||||
printf("_call_op %s/%d \n", ((PredEntry *) arg1)->beamTable->name,((PredEntry *) arg1)->beamTable->arity);
|
||||
printf("_call_op %s/%d \n", ((PredEntry *) carg1)->beamTable->name,((PredEntry *) carg1)->beamTable->arity);
|
||||
code+=2;
|
||||
break;
|
||||
case(_safe_call_op ):
|
||||
printf("_safe_call_op %ld \n",(long) arg1);
|
||||
printf("_safe_call_op %ld \n",(long) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_safe_call_unary_op ):
|
||||
printf("_safe_call_unary_op %ld \n",(long) arg1);
|
||||
printf("_safe_call_unary_op %ld \n",(long) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_safe_call_binary_op ):
|
||||
printf("_safe_call_binary_op %ld \n",(long) arg1);
|
||||
printf("_safe_call_binary_op %ld \n",(long) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
|
||||
case(_only_1_clause_op ):
|
||||
printf("_only_1_clause_op -> Use the same AND_BOX for the %dth clause of predicate %s/%d (Yvars=%d) \n",(int) arg4,((struct Clauses *)arg1)->predi->name,(int) arg2,(int) arg3);
|
||||
printf("_only_1_clause_op -> Use the same AND_BOX for the %dth clause of predicate %s/%d (Yvars=%d) \n",(int) carg4,((struct Clauses *)carg1)->predi->name,(int) carg2,(int) carg3);
|
||||
code+=4;
|
||||
break;
|
||||
case(_try_me_op ):
|
||||
printf("_try_me_op -> 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);
|
||||
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);
|
||||
code+=5;
|
||||
break;
|
||||
case(_retry_me_op ):
|
||||
printf("_retry_me_op -> 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);
|
||||
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);
|
||||
code+=5;
|
||||
break;
|
||||
case(_trust_me_op ):
|
||||
printf("_trust_me_op -> 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);
|
||||
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);
|
||||
code+=5;
|
||||
break;
|
||||
case(_do_nothing_op ):
|
||||
@@ -272,15 +272,15 @@ int n;
|
||||
code++;
|
||||
break;
|
||||
case(_direct_safe_call_op ):
|
||||
printf("_direct_safe_call_op %ld \n",(long) arg1);
|
||||
printf("_direct_safe_call_op %ld \n",(long) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_direct_safe_call_unary_op ):
|
||||
printf("_direct_safe_call_unary_op %ld \n",(long) arg1);
|
||||
printf("_direct_safe_call_unary_op %ld \n",(long) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
case(_direct_safe_call_binary_op ):
|
||||
printf("_direct_safe_call_binary_op %ld \n",(long) arg1);
|
||||
printf("_direct_safe_call_binary_op %ld \n",(long) carg1);
|
||||
code+=2;
|
||||
break;
|
||||
|
||||
|
Reference in New Issue
Block a user