8 if (max && pc >= max)
return 1;
9 op = Yap_op_from_opcode(pc->opc);
10 save_Opcode(stream, op);
16 CHECK(save_DBGroundTerm(stream, pc->y_u.D.D));
21 CHECK(save_PtoLUIndex(stream, pc->y_u.Illss.I));
22 CHECK(save_PtoOp(stream, pc->y_u.Illss.l1));
23 CHECK(save_PtoOp(stream, pc->y_u.Illss.l2));
24 CHECK(save_Constant(stream, pc->y_u.Illss.s));
25 CHECK(save_Constant(stream, pc->y_u.Illss.e));
26 pc = NEXTOP(pc,Illss);
33 case _alloc_for_logical_pred:
34 CHECK(save_PtoLUClause(stream, pc->y_u.L.ClBase));
39 CHECK(save_BlobTermInCode(stream, pc->y_u.N.b));
46 CHECK(save_OrArg(stream, pc->y_u.Osblp.or_arg));
48 CHECK(save_Constant(stream, pc->y_u.Osblp.s));
49 CHECK(save_CellPtoHeap(stream, pc->y_u.Osblp.bmap));
50 CHECK(save_PtoOp(stream, pc->y_u.Osblp.l));
51 CHECK(save_PtoPred(stream, pc->y_u.Osblp.p0));
52 pc = NEXTOP(pc,Osblp);
58 CHECK(save_OrArg(stream, pc->y_u.Osbmp.or_arg));
60 CHECK(save_Constant(stream, pc->y_u.Osbmp.s));
61 CHECK(save_CellPtoHeap(stream, pc->y_u.Osbmp.bmap));
62 CHECK(save_Module(stream, pc->y_u.Osbmp.mod));
63 CHECK(save_PtoPred(stream, pc->y_u.Osbmp.p0));
64 pc = NEXTOP(pc,Osbmp);
69 CHECK(save_OrArg(stream, pc->y_u.Osbpa.or_arg));
71 CHECK(save_Constant(stream, pc->y_u.Osbpa.s));
72 CHECK(save_CellPtoHeap(stream, pc->y_u.Osbpa.bmap));
73 CHECK(save_PtoPred(stream, pc->y_u.Osbpa.p));
74 CHECK(save_Arity(stream, pc->y_u.Osbpa.i));
75 pc = NEXTOP(pc,Osbpa);
87 CHECK(save_OrArg(stream, pc->y_u.Osbpp.or_arg));
89 CHECK(save_Constant(stream, pc->y_u.Osbpp.s));
90 CHECK(save_CellPtoHeap(stream, pc->y_u.Osbpp.bmap));
91 CHECK(save_PtoPred(stream, pc->y_u.Osbpp.p));
92 CHECK(save_PtoPred(stream, pc->y_u.Osbpp.p0));
93 pc = NEXTOP(pc,Osbpp);
96 case _count_trust_logical:
97 case _profiled_trust_logical:
100 CHECK(save_OrArg(stream, pc->y_u.OtILl.or_arg));
103 CHECK(save_TabEntry(stream, pc->y_u.OtILl.te));
105 CHECK(save_PtoLUIndex(stream, pc->y_u.OtILl.block));
106 CHECK(save_PtoLUClause(stream, pc->y_u.OtILl.d));
107 CHECK(save_PtoOp(stream, pc->y_u.OtILl.n));
108 pc = NEXTOP(pc,OtILl);
111 case _count_retry_logical:
112 case _profiled_retry_logical:
116 CHECK(save_OrArg(stream, pc->y_u.OtaLl.or_arg));
119 CHECK(save_TabEntry(stream, pc->y_u.OtaLl.te));
121 CHECK(save_Arity(stream, pc->y_u.OtaLl.s));
122 CHECK(save_PtoLUClause(stream, pc->y_u.OtaLl.d));
123 CHECK(save_PtoOp(stream, pc->y_u.OtaLl.n));
124 pc = NEXTOP(pc,OtaLl);
134 CHECK(save_OrArg(stream, pc->y_u.OtapFs.or_arg));
137 CHECK(save_TabEntry(stream, pc->y_u.OtapFs.te));
139 CHECK(save_Arity(stream, pc->y_u.OtapFs.s));
140 CHECK(save_PtoPred(stream, pc->y_u.OtapFs.p));
141 CHECK(save_ExternalFunction(stream, pc->y_u.OtapFs.f));
142 CHECK(save_Constant(stream, pc->y_u.OtapFs.extra));
143 pc = NEXTOP(pc,OtapFs);
146 case _count_retry_and_mark:
147 case _count_retry_me:
148 case _count_trust_me:
149 case _profiled_retry_and_mark:
150 case _profiled_retry_me:
151 case _profiled_trust_me:
153 case _retry_and_mark:
155 case _spy_or_trymark:
162 CHECK(save_OrArg(stream, pc->y_u.Otapl.or_arg));
165 CHECK(save_TabEntry(stream, pc->y_u.Otapl.te));
167 CHECK(save_Arity(stream, pc->y_u.Otapl.s));
168 CHECK(save_PtoPred(stream, pc->y_u.Otapl.p));
169 CHECK(save_PtoOp(stream, pc->y_u.Otapl.d));
170 pc = NEXTOP(pc,Otapl);
174 CHECK(save_ConstantTerm(stream, pc->y_u.c.c));
179 CHECK(save_ConstantTerm(stream, pc->y_u.cc.c1));
180 CHECK(save_ConstantTerm(stream, pc->y_u.cc.c2));
185 CHECK(save_ConstantTerm(stream, pc->y_u.ccc.c1));
186 CHECK(save_ConstantTerm(stream, pc->y_u.ccc.c2));
187 CHECK(save_ConstantTerm(stream, pc->y_u.ccc.c3));
192 CHECK(save_ConstantTerm(stream, pc->y_u.cccc.c1));
193 CHECK(save_ConstantTerm(stream, pc->y_u.cccc.c2));
194 CHECK(save_ConstantTerm(stream, pc->y_u.cccc.c3));
195 CHECK(save_ConstantTerm(stream, pc->y_u.cccc.c4));
196 pc = NEXTOP(pc,cccc);
200 CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c1));
201 CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c2));
202 CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c3));
203 CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c4));
204 CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c5));
205 pc = NEXTOP(pc,ccccc);
209 CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c1));
210 CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c2));
211 CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c3));
212 CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c4));
213 CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c5));
214 CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c6));
215 pc = NEXTOP(pc,cccccc);
219 CHECK(save_ConstantTerm(stream, pc->y_u.clll.c));
220 CHECK(save_PtoOp(stream, pc->y_u.clll.l1));
221 CHECK(save_PtoOp(stream, pc->y_u.clll.l2));
222 CHECK(save_PtoOp(stream, pc->y_u.clll.l3));
223 pc = NEXTOP(pc,clll);
227 CHECK(save_DoubleInCode(stream, pc->y_u.d.d));
254 case _unify_idb_term:
259 if (op == _Nstop || op == _copy_idb_term || op == _unify_idb_term)
return 1;
265 CHECK(save_Func(stream, pc->y_u.fa.f));
266 CHECK(save_Arity(stream, pc->y_u.fa.a));
271 CHECK(save_IntegerInCode(stream, pc->y_u.i.i));
287 CHECK(save_PtoOp(stream, pc->y_u.l.l));
291 case _switch_on_type:
292 CHECK(save_PtoOp(stream, pc->y_u.llll.l1));
293 CHECK(save_PtoOp(stream, pc->y_u.llll.l2));
294 CHECK(save_PtoOp(stream, pc->y_u.llll.l3));
295 CHECK(save_PtoOp(stream, pc->y_u.llll.l4));
296 pc = NEXTOP(pc,llll);
306 CHECK(save_PtoOp(stream, pc->y_u.lp.l));
307 CHECK(save_PtoPred(stream, pc->y_u.lp.p));
312 case _unify_l_list_write:
314 case _unify_l_void_write:
316 case _unify_list_write:
318 case _unify_void_write:
319 CHECK(save_Opcode(stream, pc->y_u.o.opcw));
324 case _unify_l_dbterm:
325 CHECK(save_Opcode(stream, pc->y_u.oD.opcw));
326 CHECK(save_DBGroundTerm(stream, pc->y_u.oD.D));
331 case _unify_l_bigint:
332 CHECK(save_Opcode(stream, pc->y_u.oN.opcw));
333 CHECK(save_BlobTermInCode(stream, pc->y_u.oN.b));
338 case _unify_atom_write:
340 case _unify_l_atom_write:
341 CHECK(save_Opcode(stream, pc->y_u.oc.opcw));
342 CHECK(save_ConstantTerm(stream, pc->y_u.oc.c));
347 case _unify_float_write:
349 case _unify_l_float_write:
350 CHECK(save_Opcode(stream, pc->y_u.od.opcw));
351 CHECK(save_DoubleInCode(stream, pc->y_u.od.d));
356 case _unify_l_struc_write:
358 case _unify_struct_write:
359 CHECK(save_Opcode(stream, pc->y_u.ofa.opcw));
360 CHECK(save_Func(stream, pc->y_u.ofa.f));
361 CHECK(save_Arity(stream, pc->y_u.ofa.a));
365 case _unify_l_longint:
366 case _unify_l_longint_write:
368 case _unify_longint_write:
369 CHECK(save_Opcode(stream, pc->y_u.oi.opcw));
370 CHECK(save_IntegerInCode(stream, pc->y_u.oi.i));
374 case _switch_list_nl:
375 CHECK(save_Opcode(stream, pc->y_u.ollll.pop));
376 CHECK(save_PtoOp(stream, pc->y_u.ollll.l1));
377 CHECK(save_PtoOp(stream, pc->y_u.ollll.l2));
378 CHECK(save_PtoOp(stream, pc->y_u.ollll.l3));
379 CHECK(save_PtoOp(stream, pc->y_u.ollll.l4));
380 pc = NEXTOP(pc,ollll);
386 case _unify_l_n_voids:
387 case _unify_l_n_voids_write:
389 case _unify_n_voids_write:
390 CHECK(save_Opcode(stream, pc->y_u.os.opcw));
391 CHECK(save_Constant(stream, pc->y_u.os.s));
396 case _unify_n_atoms_write:
397 CHECK(save_Opcode(stream, pc->y_u.osc.opcw));
398 CHECK(save_Constant(stream, pc->y_u.osc.s));
399 CHECK(save_ConstantTerm(stream, pc->y_u.osc.c));
403 case _unify_l_string:
405 CHECK(save_Opcode(stream, pc->y_u.ou.opcw));
406 CHECK(save_BlobTermInCode(stream, pc->y_u.ou.ut));
411 case _save_appl_x_write:
413 case _save_pair_x_write:
415 case _unify_l_x_loc_write:
417 case _unify_l_x_val_write:
419 case _unify_l_x_var_write:
421 case _unify_x_loc_write:
423 case _unify_x_val_write:
425 case _unify_x_var_write:
426 CHECK(save_Opcode(stream, pc->y_u.ox.opcw));
427 CHECK(save_X(stream, pc->y_u.ox.x));
431 case _unify_l_x_var2:
432 case _unify_l_x_var2_write:
434 case _unify_x_var2_write:
435 CHECK(save_Opcode(stream, pc->y_u.oxx.opcw));
436 CHECK(save_X(stream, pc->y_u.oxx.xl));
437 CHECK(save_X(stream, pc->y_u.oxx.xr));
442 case _save_appl_y_write:
444 case _save_pair_y_write:
446 case _unify_l_y_loc_write:
448 case _unify_l_y_val_write:
450 case _unify_l_y_var_write:
452 case _unify_y_loc_write:
454 case _unify_y_val_write:
456 case _unify_y_var_write:
457 CHECK(save_Opcode(stream, pc->y_u.oy.opcw));
458 CHECK(save_Y(stream, pc->y_u.oy.y));
465 case _enter_profiling:
468 case _retry_profiled:
471 CHECK(save_PtoPred(stream, pc->y_u.p.p));
476 CHECK(save_PtoPred(stream, pc->y_u.plxxs.p));
477 CHECK(save_PtoOp(stream, pc->y_u.plxxs.f));
478 CHECK(save_X(stream, pc->y_u.plxxs.x1));
479 CHECK(save_X(stream, pc->y_u.plxxs.x2));
480 CHECK(save_Constant(stream, pc->y_u.plxxs.flags));
481 pc = NEXTOP(pc,plxxs);
486 CHECK(save_PtoPred(stream, pc->y_u.plxys.p));
487 CHECK(save_PtoOp(stream, pc->y_u.plxys.f));
488 CHECK(save_X(stream, pc->y_u.plxys.x));
489 CHECK(save_Y(stream, pc->y_u.plxys.y));
490 CHECK(save_Constant(stream, pc->y_u.plxys.flags));
491 pc = NEXTOP(pc,plxys);
495 CHECK(save_PtoPred(stream, pc->y_u.plyys.p));
496 CHECK(save_PtoOp(stream, pc->y_u.plyys.f));
497 CHECK(save_Y(stream, pc->y_u.plyys.y1));
498 CHECK(save_Y(stream, pc->y_u.plyys.y2));
499 CHECK(save_Constant(stream, pc->y_u.plyys.flags));
500 pc = NEXTOP(pc,plyys);
508 CHECK(save_Constant(stream, pc->y_u.s.s));
513 CHECK(save_Constant(stream, pc->y_u.sc.s));
514 CHECK(save_ConstantTerm(stream, pc->y_u.sc.c));
518 case _switch_on_sub_arg_type:
519 CHECK(save_Constant(stream, pc->y_u.sllll.s));
520 CHECK(save_PtoOp(stream, pc->y_u.sllll.l1));
521 CHECK(save_PtoOp(stream, pc->y_u.sllll.l2));
522 CHECK(save_PtoOp(stream, pc->y_u.sllll.l3));
523 CHECK(save_PtoOp(stream, pc->y_u.sllll.l4));
524 pc = NEXTOP(pc,sllll);
528 CHECK(save_Constant(stream, pc->y_u.slpp.s));
529 CHECK(save_PtoOp(stream, pc->y_u.slpp.l));
530 CHECK(save_PtoPred(stream, pc->y_u.slpp.p));
531 CHECK(save_PtoPred(stream, pc->y_u.slpp.p0));
532 pc = NEXTOP(pc,slpp);
539 case _switch_on_cons:
540 case _switch_on_func:
541 CHECK(save_Constant(stream, pc->y_u.sssl.s));
542 CHECK(save_Constant(stream, pc->y_u.sssl.e));
543 CHECK(save_Constant(stream, pc->y_u.sssl.w));
544 CHECK(save_PtoOp(stream, pc->y_u.sssl.l));
545 pc = NEXTOP(pc,sssl);
548 case _expand_clauses:
549 CHECK(save_Constant(stream, pc->y_u.sssllp.s1));
550 CHECK(save_Constant(stream, pc->y_u.sssllp.s2));
551 CHECK(save_Constant(stream, pc->y_u.sssllp.s3));
552 CHECK(save_PtoOp(stream, pc->y_u.sssllp.sprev));
553 CHECK(save_PtoOp(stream, pc->y_u.sssllp.snext));
554 CHECK(save_PtoPred(stream, pc->y_u.sssllp.p));
555 pc = NEXTOP(pc,sssllp);
565 CHECK(save_X(stream, pc->y_u.x.x));
571 CHECK(save_X(stream, pc->y_u.xD.x));
572 CHECK(save_DBGroundTerm(stream, pc->y_u.xD.D));
578 CHECK(save_X(stream, pc->y_u.xN.x));
579 CHECK(save_BlobTermInCode(stream, pc->y_u.xN.b));
585 CHECK(save_X(stream, pc->y_u.xc.x));
586 CHECK(save_ConstantTerm(stream, pc->y_u.xc.c));
592 CHECK(save_X(stream, pc->y_u.xd.x));
593 CHECK(save_DoubleInCode(stream, pc->y_u.xd.d));
599 CHECK(save_X(stream, pc->y_u.xfa.x));
600 CHECK(save_Func(stream, pc->y_u.xfa.f));
601 CHECK(save_Arity(stream, pc->y_u.xfa.a));
607 CHECK(save_X(stream, pc->y_u.xi.x));
608 CHECK(save_IntegerInCode(stream, pc->y_u.xi.i));
622 CHECK(save_X(stream, pc->y_u.xl.x));
623 CHECK(save_PtoOp(stream, pc->y_u.xl.F));
627 case _jump_if_nonvar:
628 CHECK(save_X(stream, pc->y_u.xll.x));
629 CHECK(save_PtoOp(stream, pc->y_u.xll.l1));
630 CHECK(save_PtoOp(stream, pc->y_u.xll.l2));
634 case _switch_on_arg_type:
635 CHECK(save_X(stream, pc->y_u.xllll.x));
636 CHECK(save_PtoOp(stream, pc->y_u.xllll.l1));
637 CHECK(save_PtoOp(stream, pc->y_u.xllll.l2));
638 CHECK(save_PtoOp(stream, pc->y_u.xllll.l3));
639 CHECK(save_PtoOp(stream, pc->y_u.xllll.l4));
640 pc = NEXTOP(pc,xllll);
645 CHECK(save_X(stream, pc->y_u.xps.x));
646 CHECK(save_PtoPred(stream, pc->y_u.xps.p0));
647 CHECK(save_Constant(stream, pc->y_u.xps.s));
652 CHECK(save_X(stream, pc->y_u.xu.x));
653 CHECK(save_BlobTermInCode(stream, pc->y_u.xu.ut));
664 CHECK(save_X(stream, pc->y_u.xx.xl));
665 CHECK(save_X(stream, pc->y_u.xx.xr));
670 CHECK(save_X(stream, pc->y_u.xxc.x));
671 CHECK(save_X(stream, pc->y_u.xxc.xi));
672 CHECK(save_ConstantTerm(stream, pc->y_u.xxc.c));
689 CHECK(save_X(stream, pc->y_u.xxn.x));
690 CHECK(save_X(stream, pc->y_u.xxn.xi));
691 CHECK(save_Integer(stream, pc->y_u.xxn.c));
706 CHECK(save_X(stream, pc->y_u.xxx.x));
707 CHECK(save_X(stream, pc->y_u.xxx.x1));
708 CHECK(save_X(stream, pc->y_u.xxx.x2));
713 CHECK(save_X(stream, pc->y_u.xxxx.xl1));
714 CHECK(save_X(stream, pc->y_u.xxxx.xl2));
715 CHECK(save_X(stream, pc->y_u.xxxx.xr1));
716 CHECK(save_X(stream, pc->y_u.xxxx.xr2));
717 pc = NEXTOP(pc,xxxx);
721 CHECK(save_X(stream, pc->y_u.xxy.x));
722 CHECK(save_X(stream, pc->y_u.xxy.x1));
723 CHECK(save_Y(stream, pc->y_u.xxy.y2));
731 CHECK(save_Y(stream, pc->y_u.y.y));
745 CHECK(save_Y(stream, pc->y_u.yl.y));
746 CHECK(save_PtoOp(stream, pc->y_u.yl.F));
752 CHECK(save_Y(stream, pc->y_u.yps.y));
753 CHECK(save_PtoPred(stream, pc->y_u.yps.p0));
754 CHECK(save_Constant(stream, pc->y_u.yps.s));
766 CHECK(save_Y(stream, pc->y_u.yx.y));
767 CHECK(save_X(stream, pc->y_u.yx.x));
772 CHECK(save_Y(stream, pc->y_u.yxc.y));
773 CHECK(save_X(stream, pc->y_u.yxc.xi));
774 CHECK(save_ConstantTerm(stream, pc->y_u.yxc.c));
791 CHECK(save_Y(stream, pc->y_u.yxn.y));
792 CHECK(save_X(stream, pc->y_u.yxn.xi));
793 CHECK(save_Integer(stream, pc->y_u.yxn.c));
808 CHECK(save_Y(stream, pc->y_u.yxx.y));
809 CHECK(save_X(stream, pc->y_u.yxx.x1));
810 CHECK(save_X(stream, pc->y_u.yxx.x2));
815 CHECK(save_Y(stream, pc->y_u.yyx.y1));
816 CHECK(save_Y(stream, pc->y_u.yyx.y2));
817 CHECK(save_X(stream, pc->y_u.yyx.x));
823 CHECK(save_Y(stream, pc->y_u.yyxx.y1));
824 CHECK(save_Y(stream, pc->y_u.yyxx.y2));
825 CHECK(save_X(stream, pc->y_u.yyxx.x1));
826 CHECK(save_X(stream, pc->y_u.yyxx.x2));
827 pc = NEXTOP(pc,yyxx);
835 CHECK(save_OrArg(stream, pc->y_u.Otapl.or_arg));
838 CHECK(save_TabEntry(stream, pc->y_u.Otapl.te));
840 CHECK(save_Arity(stream, pc->y_u.Otapl.s));
841 CHECK(save_PtoPred(stream, pc->y_u.Otapl.p));
842 CHECK(save_PtoOp(stream, pc->y_u.Otapl.d));
843 pc = NEXTOP(pc,Otapl);
846 case _getwork_first_time:
847 if (op == _Nstop || op == _copy_idb_term || op == _unify_idb_term)
return 1;
853 case _table_answer_resolution:
854#ifdef THREADS_CONSUMER_SHARING
855 case _table_answer_resolution_completion:
857 case _table_completion:
858 case _table_load_answer:
860 case _table_retry_me:
862 case _table_trust_me:
864 case _table_try_answer:
866 case _table_try_single:
868 CHECK(save_OrArg(stream, pc->y_u.Otapl.or_arg));
871 CHECK(save_TabEntry(stream, pc->y_u.Otapl.te));
873 CHECK(save_Arity(stream, pc->y_u.Otapl.s));
874 CHECK(save_PtoPred(stream, pc->y_u.Otapl.p));
875 CHECK(save_PtoOp(stream, pc->y_u.Otapl.d));
876 pc = NEXTOP(pc,Otapl);
879#ifdef TABLING_INNER_CUTS
880 case _clause_with_cut:
882 if (op == _Nstop || op == _copy_idb_term || op == _unify_idb_term)
return 1;
886 case _table_new_answer:
887 CHECK(save_Constant(stream, pc->y_u.s.s));
892 case _trie_do_appl_in_pair:
894 case _trie_do_atom_in_pair:
895 case _trie_do_bigint:
896 case _trie_do_double:
897 case _trie_do_extension:
899 case _trie_do_longint:
901 case _trie_do_null_in_pair:
904 case _trie_do_val_in_pair:
906 case _trie_do_var_in_pair:
907 case _trie_retry_appl:
908 case _trie_retry_appl_in_pair:
909 case _trie_retry_atom:
910 case _trie_retry_atom_in_pair:
911 case _trie_retry_bigint:
912 case _trie_retry_double:
913 case _trie_retry_extension:
914 case _trie_retry_gterm:
915 case _trie_retry_longint:
916 case _trie_retry_null:
917 case _trie_retry_null_in_pair:
918 case _trie_retry_pair:
919 case _trie_retry_val:
920 case _trie_retry_val_in_pair:
921 case _trie_retry_var:
922 case _trie_retry_var_in_pair:
923 case _trie_trust_appl:
924 case _trie_trust_appl_in_pair:
925 case _trie_trust_atom:
926 case _trie_trust_atom_in_pair:
927 case _trie_trust_bigint:
928 case _trie_trust_double:
929 case _trie_trust_extension:
930 case _trie_trust_gterm:
931 case _trie_trust_longint:
932 case _trie_trust_null:
933 case _trie_trust_null_in_pair:
934 case _trie_trust_pair:
935 case _trie_trust_val:
936 case _trie_trust_val_in_pair:
937 case _trie_trust_var:
938 case _trie_trust_var_in_pair:
940 case _trie_try_appl_in_pair:
942 case _trie_try_atom_in_pair:
943 case _trie_try_bigint:
944 case _trie_try_double:
945 case _trie_try_extension:
946 case _trie_try_gterm:
947 case _trie_try_longint:
949 case _trie_try_null_in_pair:
952 case _trie_try_val_in_pair:
954 case _trie_try_var_in_pair:
955 if (op == _Nstop || op == _copy_idb_term || op == _unify_idb_term)
return 1;