14 check_stack(NoStackCut, HR);
17 SET_ASP(YREG, AS_CELLS(PREG->y_u.s.s));
18 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, s),Osbpp),l);
26 PROCESS_INTERRUPTED_PRUNE(interrupt_cut);
35 check_stack(NoStackCutT, HR);
37 SET_ASP(YREG, AS_CELLS( PREG->y_u.s.s) );
42 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, s),Osbpp),l);
46 PROCESS_INTERRUPTED_PRUNE(interrupt_cut_t);
54 check_stack(NoStackCutE, HR);
56 SET_ASP(YREG, AS_CELLS( PREG->y_u.s.s));
57 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, s),Osbpp),l);
64 PROCESS_INTERRUPTED_PRUNE(interrupt_cut_e);
72#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
73 XREG(d0) = MkIntegerTerm((Int)B);
75 XREG(d0) = MkIntegerTerm(LCL0-(CELL *) (B));
77 PREG = NEXTOP(PREG, x);
85 INITIALIZE_PERMVAR(YREG+PREG->y_u.y.y,MkIntegerTerm((Int)B));
87 INITIALIZE_PERMVAR(YREG+PREG->y_u.y.y,MkIntegerTerm(LCL0-(CELL *)(B)));
89 PREG = NEXTOP(PREG, y);
96 check_stack(NoStackCommitX, HR);
99 d0 = XREG(PREG->y_u.xps.x);
100 deref_head(d0, commit_b_x_unk);
103 SET_ASP(YREG, AS_CELLS(PREG->y_u.xps.s));
104 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xps),Osbpp),l);
107#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
110 pt0 = (
choiceptr)(LCL0-IntegerOfTerm(d0));
113 prune(pt0 PASS_REGS);
119 deref_body(d0, pt1, commit_b_x_unk, commit_b_x_nvar);
128 PROCESS_INTERRUPTED_PRUNE(interrupt_commit_x);
133 CACHE_Y_AS_ENV(YREG);
134 check_stack(NoStackCommitY, HR);
137 d0 = YREG[PREG->y_u.yps.y];
138 deref_head(d0, commit_b_y_unk);
140 SET_ASP(YREG, AS_CELLS(PREG->y_u.yps.s));
141 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yps),Osbpp),l);
144#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
147 pt0 = (
choiceptr)(LCL0-IntegerOfTerm(d0));
150 prune(pt0 PASS_REGS);
156 deref_body(d0, pt1, commit_b_y_unk, commit_b_y_nvar);
166 PROCESS_INTERRUPTED_PRUNE(interrupt_commit_y);
171 Op(soft_cut_b_x, xps);
172 CACHE_Y_AS_ENV(YREG);
173 check_stack(NoStackSoft_CutX, HR);
176 d0 = XREG(PREG->y_u.xps.x);
177 deref_head(d0, soft_cut_b_x_unk);
180 SET_ASP(YREG, AS_CELLS(PREG->y_u.xps.s));
181 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xps),Osbpp),l);
184#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
187 pt0 = (
choiceptr)(LCL0-IntegerOfTerm(d0));
190 while(pt0->cp_b && pt0->cp_b->cp_ap == TRUSTFAILCODE) {
194 prune(pt0 PASS_REGS);
197 pt0->cp_ap = TRUSTFAILCODE;
203 deref_body(d0, pt1, soft_cut_b_x_unk, soft_cut_b_x_nvar);
212 PROCESS_INTERRUPTED_PRUNE(interrupt_soft_cut_x);
216 Op(soft_cut_b_y, yps);
217 CACHE_Y_AS_ENV(YREG);
218 check_stack(NoStackSoft_CutY, HR);
221 d0 = YREG[PREG->y_u.yps.y];
222 deref_head(d0, soft_cut_b_y_unk);
224 SET_ASP(YREG, AS_CELLS(PREG->y_u.yps.s));
225 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yps),Osbpp),l);
228#if defined(YAPOR_SBA) && defined(FROZEN_STACKS)
231 pt0 = (
choiceptr)(LCL0-IntegerOfTerm(d0));
234 while(pt0->cp_b && pt0->cp_b->cp_ap == TRUSTFAILCODE) {
238 prune(pt0 PASS_REGS);
241 pt0->cp_ap = TRUSTFAILCODE;
246 deref_body(d0, pt1, soft_cut_b_y_unk, soft_cut_b_y_nvar);
259 PROCESS_INTERRUPTED_PRUNE(interrupt_soft_cut_y);
272 CACHE_Y_AS_ENV(YREG);
275 check_stack(NoStackExecute, HR);
278 #ifdef LOW_LEVEL_TRACER
279 if (Yap_do_low_level_trace) {
280 low_level_trace(enter_pred,
281 PREG->y_u.Osbpp.p,XREGS+1);
285 pt0 = PREG->y_u.Osbpp.p;
287 FETCH_Y_FROM_ENV(YREG);
288 pt0 = PREG->y_u.Osbpp.p;
290 ALWAYS_LOOKAHEAD(pt0->OpcodeOfPred);
293 PREG = pt0->CodeOfPred;
299 if (DEPTH <= MkIntTerm(1)) {
300 if (pt0->ModuleOfPred) {
301 if (DEPTH == MkIntTerm(0)) {
303 }
else { DEPTH = RESET_DEPTH(); }
305 }
else if (pt0->ModuleOfPred)
306 DEPTH -= MkIntConstant(2);
310 ALWAYS_END_PREFETCH();
314 PROCESS_INT(interrupt_execute, continue_execute);
321 BOp(dexecute, Osbpp);
322#ifdef LOW_LEVEL_TRACER
323 if (Yap_do_low_level_trace)
324 low_level_trace(enter_pred,PREG->y_u.Osbpp.p,XREGS+1);
326 CACHE_Y_AS_ENV(YREG);
329 check_stack(NoStackDExecute, HR);
336 FETCH_Y_FROM_ENV(YREG);
337 pt0 = PREG->y_u.Osbpp.p;
339 if (DEPTH <= MkIntTerm(1)) {
340 if (pt0->ModuleOfPred) {
341 if (DEPTH == MkIntTerm(0)) {
344 DEPTH = RESET_DEPTH();
347 }
else if (pt0->ModuleOfPred)
348 DEPTH -= MkIntConstant(2);
350 PREG = pt0->CodeOfPred;
353 ALWAYS_LOOKAHEAD(pt0->OpcodeOfPred);
355 CPREG = (
yamop *) ENV_YREG[E_CP];
356 ENV_YREG = ENV = (CELL *) ENV_YREG[E_E];
361 if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) ENV_YREG = (CELL *) top_b;
363 if (ENV_YREG > (CELL *) top_b) ENV_YREG = (CELL *) top_b;
365 else ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size(CPREG));
368 if (ENV_YREG > (CELL *)B) {
369 ENV_YREG = (CELL *)B;
372 ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size(CPREG));
375 WRITEBACK_Y_AS_ENV();
377 ENV_YREG[E_CB] = (CELL) B;
379 ALWAYS_END_PREFETCH();
384 PROCESS_INT(interrupt_dexecute, continue_dexecute);
389 CACHE_Y_AS_ENV(YREG);
390 ENV_YREG[E_CP] = (CELL) CPREG;
391 ENV_YREG[E_E] = (CELL) ENV;
393 ENV_YREG[E_DEPTH] = DEPTH;
399#ifdef LOW_LEVEL_TRACER
400 if (Yap_do_low_level_trace) {
401 low_level_trace(enter_pred,PREG->y_u.Osbpp.p,XREGS+1);
405 CACHE_Y_AS_ENV(YREG);
409 pt = PREG->y_u.Osbpp.p;
411 check_stack(NoStackCall, HR);
415 ENV_YREG = (CELL *) (((
char *) ENV_YREG) + PREG->y_u.Osbpp.s);
416 CPREG = NEXTOP(PREG, Osbpp);
417 ALWAYS_LOOKAHEAD(pt->OpcodeOfPred);
418 PREG = pt->CodeOfPred;
422 if (DEPTH <= MkIntTerm(1)) {
423 if (pt->ModuleOfPred) {
424 if (DEPTH == MkIntTerm(0)) {
427 DEPTH = RESET_DEPTH();
430 }
else if (pt->ModuleOfPred)
431 DEPTH -= MkIntConstant(2);
437 if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) ENV_YREG = (CELL *) top_b;
439 if (ENV_YREG > (CELL *) top_b) ENV_YREG = (CELL *) top_b;
443 if (ENV_YREG > (CELL *) B) {
444 ENV_YREG = (CELL *) B;
447 WRITEBACK_Y_AS_ENV();
449 ENV_YREG[E_CB] = (CELL) B;
451 SCH_check_requests();
454 ALWAYS_END_PREFETCH();
459 PROCESS_INT(interrupt_call, call_body);
460 if (PREG->opc == FCALL_OPCODE)
466 CACHE_Y_AS_ENV(YREG);
467 ALWAYS_LOOKAHEAD(CPREG->opc);
473 DEPTH = ENV_YREG[E_DEPTH];
475 WRITEBACK_Y_AS_ENV();
477 ALWAYS_END_PREFETCH();
483 CACHE_Y_AS_ENV(YREG);
484 PREG = NEXTOP(PREG, e);
485 ENV_YREG[E_CP] = (CELL) CPREG;
486 ENV_YREG[E_E] = (CELL) ENV;
488 ENV_YREG[E_DEPTH] = DEPTH;
496 CACHE_Y_AS_ENV(YREG);
500 check_stack(NoStackDeallocate, HR);
502 PREG = NEXTOP(PREG, p);
506 CPREG = (
yamop *) ENV_YREG[E_CP];
507 ENV = ENV_YREG = (CELL *) ENV_YREG[E_E];
509 DEPTH = ENV_YREG[E_DEPTH];
515 if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) ENV_YREG = (CELL *) top_b;
517 if (ENV_YREG > (CELL *) top_b) ENV_YREG = (CELL *) top_b;
519 else ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size(CPREG));
522 if (ENV_YREG > (CELL *) B)
523 ENV_YREG = (CELL *) B;
525 ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size(CPREG));
527 WRITEBACK_Y_AS_ENV();
537 PREG = NEXTOP(PREG,p);
539 d0 = interrupt_deallocate( PASS_REGS1 );
541 PREG = PREVOP(PREG,p);
560#include "tab.insts.h"
561#include "tab.tries.insts.h"
570 printf(
"Aqui estou eu..................\n");
572 abort_eam(
"Falhei\n");
577 PREG = NEXTOP(PREG, e);
583 extern CELL *beam_ALTERNATIVES;
584 *beam_ALTERNATIVES= (CELL *) PREG->y_u.os.opcw;
586 if (OLD_B!=B)
goto fail;
594 if (!eam_am((
PredEntry *) PREG->y_u.os.s)) FAIL();
599 while (POP_CHOICE_POINT(B->cp_b)) {
608#define NORM_CP(CP) ((choiceptr)(CP))
610 YREG = (CELL *) (NORM_CP(YREG) - 1);
612 store_yaam_reg_cpdepth(ccp);
614 ccp->cp_ap = BEAM_RETRY_CODE;
623 PREG = NEXTOP(PREG, os);