more bigint and dbterm fixes.

This commit is contained in:
Vítor Santos Costa
2010-12-16 22:21:46 +00:00
parent 5a2d908489
commit cfe0dda995
11 changed files with 198 additions and 105 deletions

View File

@@ -16,6 +16,11 @@ restore_opcodes(yamop *pc, yamop *max)
fprintf(stderr, "%s ", Yap_op_names[op]);
#endif
switch (op) {
/* instructions type D */
case _write_dbterm:
pc->u.D.D = DBGroundTermAdjust(pc->u.D.D);
pc = NEXTOP(pc,D);
break;
/* instructions type Ills */
case _enter_lu_pred:
pc->u.Ills.I = PtoLUIndexAdjust(pc->u.Ills.I);
@@ -30,6 +35,11 @@ restore_opcodes(yamop *pc, yamop *max)
pc->u.L.ClBase = PtoLUClauseAdjust(pc->u.L.ClBase);
pc = NEXTOP(pc,L);
break;
/* instructions type N */
case _write_bigint:
pc->u.N.b = BlobTermInCodeAdjust(pc->u.N.b);
pc = NEXTOP(pc,N);
break;
/* instructions type Osblp */
case _either:
case _or_else:
@@ -294,13 +304,6 @@ restore_opcodes(yamop *pc, yamop *max)
pc->u.o.opcw = OpcodeAdjust(pc->u.o.opcw);
pc = NEXTOP(pc,o);
break;
/* instructions type oB */
case _unify_bigint:
case _unify_l_bigint:
pc->u.oB.opcw = OpcodeAdjust(pc->u.oB.opcw);
pc->u.oB.b = BlobTermInCodeAdjust(pc->u.oB.b);
pc = NEXTOP(pc,oB);
break;
/* instructions type oD */
case _unify_dbterm:
case _unify_l_dbterm:
@@ -308,6 +311,13 @@ restore_opcodes(yamop *pc, yamop *max)
pc->u.oD.D = DBGroundTermAdjust(pc->u.oD.D);
pc = NEXTOP(pc,oD);
break;
/* instructions type oN */
case _unify_bigint:
case _unify_l_bigint:
pc->u.oN.opcw = OpcodeAdjust(pc->u.oN.opcw);
pc->u.oN.b = BlobTermInCodeAdjust(pc->u.oN.b);
pc = NEXTOP(pc,oN);
break;
/* instructions type oc */
case _unify_atom:
case _unify_atom_write:
@@ -535,18 +545,20 @@ restore_opcodes(yamop *pc, yamop *max)
pc->u.x.x = XAdjust(pc->u.x.x);
pc = NEXTOP(pc,x);
break;
/* instructions type xB */
case _get_bigint:
pc->u.xB.x = XAdjust(pc->u.xB.x);
pc->u.xB.b = BlobTermInCodeAdjust(pc->u.xB.b);
pc = NEXTOP(pc,xB);
break;
/* instructions type xD */
case _get_dbterm:
case _put_dbterm:
pc->u.xD.x = XAdjust(pc->u.xD.x);
pc->u.xD.D = DBGroundTermAdjust(pc->u.xD.D);
pc = NEXTOP(pc,xD);
break;
/* instructions type xN */
case _get_bigint:
case _put_bigint:
pc->u.xN.x = XAdjust(pc->u.xN.x);
pc->u.xN.b = BlobTermInCodeAdjust(pc->u.xN.b);
pc = NEXTOP(pc,xN);
break;
/* instructions type xc */
case _get_atom:
case _put_atom: