Merge branch 'master' of git.dcc.fc.up.pt:yap-6.3

This commit is contained in:
Vitor Santos Costa 2013-06-05 23:01:10 +01:00
commit e96750b476
2 changed files with 12 additions and 11 deletions

View File

@ -1932,7 +1932,7 @@ p_atom_number( USES_REGS1 )
#define SUB_ATOM_HAS_WIDE 16 #define SUB_ATOM_HAS_WIDE 16
static void * static void *
alloc_tmp_stack(size_t sz) { alloc_tmp_stack(size_t sz USES_REGS) {
void *pt = (void *)H; void *pt = (void *)H;
while (H > ASP-(1044+sz/sizeof(CELL))) { while (H > ASP-(1044+sz/sizeof(CELL))) {
if (!Yap_gc(5, ENV, gc_P(P,CP))) { if (!Yap_gc(5, ENV, gc_P(P,CP))) {
@ -1944,12 +1944,12 @@ alloc_tmp_stack(size_t sz) {
} }
static Atom static Atom
build_new_atom(int mask, wchar_t *wp, char *p, size_t min, size_t len) build_new_atom(int mask, wchar_t *wp, char *p, size_t min, size_t len USES_REGS)
{ {
Atom nat; Atom nat;
if (mask & SUB_ATOM_HAS_WIDE) { if (mask & SUB_ATOM_HAS_WIDE) {
wchar_t *src = wp+min; wchar_t *src = wp+min;
wchar_t *d = alloc_tmp_stack((len+1)*sizeof(wchar_t)); wchar_t *d = alloc_tmp_stack((len+1)*sizeof(wchar_t) PASS_REGS);
if (!d) return NIL; if (!d) return NIL;
wcsncpy(d, src, len); wcsncpy(d, src, len);
@ -1957,7 +1957,7 @@ build_new_atom(int mask, wchar_t *wp, char *p, size_t min, size_t len)
nat = Yap_LookupMaybeWideAtom(d); nat = Yap_LookupMaybeWideAtom(d);
} else { } else {
char *src = p+min; char *src = p+min;
char *d = alloc_tmp_stack((len+1)*sizeof(char)); char *d = alloc_tmp_stack((len+1)*sizeof(char) PASS_REGS);
if (!d) return NIL; if (!d) return NIL;
strncpy(d, src, len); strncpy(d, src, len);
@ -2142,7 +2142,7 @@ cont_sub_atom( USES_REGS1 )
cut_fail(); cut_fail();
} }
} else if (mask & SUB_ATOM_HAS_SIZE) { } else if (mask & SUB_ATOM_HAS_SIZE) {
nat = build_new_atom(mask, wp, p, min, len); nat = build_new_atom(mask, wp, p, min, len PASS_REGS);
Yap_unify(ARG2, MkIntegerTerm(min)); Yap_unify(ARG2, MkIntegerTerm(min));
Yap_unify(ARG4, MkIntegerTerm(after)); Yap_unify(ARG4, MkIntegerTerm(after));
Yap_unify(ARG5, MkAtomTerm(nat)); Yap_unify(ARG5, MkAtomTerm(nat));
@ -2150,7 +2150,7 @@ cont_sub_atom( USES_REGS1 )
if (after-- == 0) cut_succeed(); if (after-- == 0) cut_succeed();
} else if (mask & SUB_ATOM_HAS_MIN) { } else if (mask & SUB_ATOM_HAS_MIN) {
after = sz-(min+len); after = sz-(min+len);
nat = build_new_atom(mask, wp, p, min, len); nat = build_new_atom(mask, wp, p, min, len PASS_REGS);
Yap_unify(ARG3, MkIntegerTerm(len)); Yap_unify(ARG3, MkIntegerTerm(len));
Yap_unify(ARG4, MkIntegerTerm(after)); Yap_unify(ARG4, MkIntegerTerm(after));
Yap_unify(ARG5, MkAtomTerm(nat)); Yap_unify(ARG5, MkAtomTerm(nat));
@ -2158,14 +2158,14 @@ cont_sub_atom( USES_REGS1 )
if (after-- == 0) cut_succeed(); if (after-- == 0) cut_succeed();
} else if (mask & SUB_ATOM_HAS_AFTER) { } else if (mask & SUB_ATOM_HAS_AFTER) {
len = sz-(min+after); len = sz-(min+after);
nat = build_new_atom(mask, wp, p, min, len); nat = build_new_atom(mask, wp, p, min, len PASS_REGS);
Yap_unify(ARG2, MkIntegerTerm(min)); Yap_unify(ARG2, MkIntegerTerm(min));
Yap_unify(ARG3, MkIntegerTerm(len)); Yap_unify(ARG3, MkIntegerTerm(len));
Yap_unify(ARG5, MkAtomTerm(nat)); Yap_unify(ARG5, MkAtomTerm(nat));
min++; min++;
if (len-- == 0) cut_succeed(); if (len-- == 0) cut_succeed();
} else { } else {
nat = build_new_atom(mask, wp, p, min, len); nat = build_new_atom(mask, wp, p, min, len PASS_REGS);
Yap_unify(ARG2, MkIntegerTerm(min)); Yap_unify(ARG2, MkIntegerTerm(min));
Yap_unify(ARG3, MkIntegerTerm(len)); Yap_unify(ARG3, MkIntegerTerm(len));
Yap_unify(ARG4, MkIntegerTerm(after)); Yap_unify(ARG4, MkIntegerTerm(after));
@ -2270,7 +2270,7 @@ init_sub_atom( USES_REGS1 )
(SUB_ATOM_HAS_MIN|SUB_ATOM_HAS_SIZE)) { (SUB_ATOM_HAS_MIN|SUB_ATOM_HAS_SIZE)) {
if (min+len > sz) cut_fail(); if (min+len > sz) cut_fail();
if ((after = (sz-(min+len))) < 0) cut_fail(); if ((after = (sz-(min+len))) < 0) cut_fail();
nat = build_new_atom(mask, wp, p, min, len); nat = build_new_atom(mask, wp, p, min, len PASS_REGS);
if (!nat) cut_fail(); if (!nat) cut_fail();
out = Yap_unify(ARG4,MkIntegerTerm(after)) && out = Yap_unify(ARG4,MkIntegerTerm(after)) &&
Yap_unify(ARG5, MkAtomTerm(nat)); Yap_unify(ARG5, MkAtomTerm(nat));
@ -2278,7 +2278,7 @@ init_sub_atom( USES_REGS1 )
(SUB_ATOM_HAS_MIN|SUB_ATOM_HAS_AFTER)) { (SUB_ATOM_HAS_MIN|SUB_ATOM_HAS_AFTER)) {
if (sz < min+after) cut_fail(); if (sz < min+after) cut_fail();
len = sz-(min+after); len = sz-(min+after);
nat = build_new_atom(mask, wp, p, min, len); nat = build_new_atom(mask, wp, p, min, len PASS_REGS);
if (!nat) cut_fail(); if (!nat) cut_fail();
out = Yap_unify(ARG3,MkIntegerTerm(len)) && out = Yap_unify(ARG3,MkIntegerTerm(len)) &&
Yap_unify(ARG5, MkAtomTerm(nat)); Yap_unify(ARG5, MkAtomTerm(nat));
@ -2286,7 +2286,7 @@ init_sub_atom( USES_REGS1 )
(SUB_ATOM_HAS_SIZE|SUB_ATOM_HAS_AFTER) ) { (SUB_ATOM_HAS_SIZE|SUB_ATOM_HAS_AFTER) ) {
if (len+after > sz) cut_fail(); if (len+after > sz) cut_fail();
min = sz-(len+after); min = sz-(len+after);
nat = build_new_atom(mask, wp, p, min, len); nat = build_new_atom(mask, wp, p, min, len PASS_REGS);
if (!nat) cut_fail(); if (!nat) cut_fail();
out = Yap_unify(ARG2,MkIntegerTerm(min)) && out = Yap_unify(ARG2,MkIntegerTerm(min)) &&
Yap_unify(ARG5, MkAtomTerm(nat)); Yap_unify(ARG5, MkAtomTerm(nat));

View File

@ -327,6 +327,7 @@ Yap_MkULLIntTerm(YAP_ULONG_LONG n)
mpz_clear(new); mpz_clear(new);
return t; return t;
#else #else
CACHE_REGS
return MkIntegerTerm(n); return MkIntegerTerm(n);
#endif #endif
} }