summaryrefslogtreecommitdiff
path: root/src/runtime/oref.r
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-01-28 19:02:21 +0000
committerIgor Pashev <pashev.igor@gmail.com>2013-01-28 19:02:21 +0000
commitf627f77f23d1497c9e1f4269b5c8812d12b42f18 (patch)
tree708772d83a8355e25155cf233d5a9e38f8ad4d96 /src/runtime/oref.r
parent6ab0c0f5bf14ed9c15370407b9ee7e0b4b089ae1 (diff)
downloadicon-upstream.tar.gz
Imported Upstream version 9.5.0upstream/9.5.0upstream
Diffstat (limited to 'src/runtime/oref.r')
-rw-r--r--src/runtime/oref.r111
1 files changed, 1 insertions, 110 deletions
diff --git a/src/runtime/oref.r b/src/runtime/oref.r
index 3ac86bc..8e1ffea 100644
--- a/src/runtime/oref.r
+++ b/src/runtime/oref.r
@@ -38,35 +38,18 @@ operator{*} ! bang(underef x -> dx)
return type(dx).lst_elem
}
inline {
-
-#ifdef EventMon
- word xi = 0;
-
- EVValD(&dx, E_Lbang);
-#endif /* EventMon */
-
/*
* x is a list. Chain through each list element block and for
* each one, suspend with a variable pointing to each
* element contained in the block.
*/
for (ep = BlkLoc(dx)->list.listhead;
-#ifdef ListFix
- BlkType(ep) == T_Lelem;
-#else /* ListFix */
ep != NULL;
-#endif /* ListFix */
ep = ep->lelem.listnext){
for (i = 0; i < ep->lelem.nused; i++) {
j = ep->lelem.first + i;
if (j >= ep->lelem.nslots)
j -= ep->lelem.nslots;
-
-#ifdef EventMon
- MakeInt(++xi, &eventdesc);
- EVValD(&eventdesc, E_Lsub);
-#endif /* EventMon */
-
suspend struct_var(&ep->lelem.lslots[j], ep);
}
}
@@ -158,17 +141,12 @@ operator{*} ! bang(underef x -> dx)
inline {
struct b_tvtbl *tp;
- EVValD(&dx, E_Tbang);
-
/*
* x is a table. Chain down the element list in each bucket
* and suspend a variable pointing to each element in turn.
*/
for (ep = hgfirst(BlkLoc(dx), &state); ep != 0;
ep = hgnext(BlkLoc(dx), &state, ep)) {
-
- EVValD(&ep->telem.tval, E_Tval);
-
Protect(tp = alctvtbl(&dx, &ep->telem.tref, ep->telem.hashnum), runerr(0));
suspend tvtbl(tp);
}
@@ -180,14 +158,12 @@ operator{*} ! bang(underef x -> dx)
return store[type(dx).set_elem]
}
inline {
- EVValD(&dx, E_Sbang);
/*
* This is similar to the method for tables except that a
* value is returned instead of a variable.
*/
for (ep = hgfirst(BlkLoc(dx), &state); ep != 0;
ep = hgnext(BlkLoc(dx), &state, ep)) {
- EVValD(&ep->selem.setmem, E_Sval);
suspend ep->selem.setmem;
}
}
@@ -202,21 +178,8 @@ operator{*} ! bang(underef x -> dx)
* x is a record. Loop through the fields and suspend
* a variable pointing to each one.
*/
-
-#ifdef EventMon
- word xi = 0;
-
- EVValD(&dx, E_Rbang);
-#endif /* EventMon */
-
j = BlkLoc(dx)->record.recdesc->proc.nfields;
for (i = 0; i < j; i++) {
-
-#ifdef EventMon
- MakeInt(++xi, &eventdesc);
- EVValD(&eventdesc, E_Rsub);
-#endif /* EventMon */
-
suspend struct_var(&BlkLoc(dx)->record.fields[i],
(struct b_record *)BlkLoc(dx));
}
@@ -256,12 +219,6 @@ end
operator{0,1} ? random(underef x -> dx)
-#ifndef LargeInts
- declare {
- C_integer v = 0;
- }
-#endif /* LargeInts */
-
if is:variable(x) && is:string(dx) then {
abstract {
return new tvsubs(type(x))
@@ -347,13 +304,6 @@ operator{0,1} ? random(underef x -> dx)
rval = RandVal;
rval *= val;
i = (word)rval + 1;
-
-#ifdef EventMon
- EVValD(&dx, E_Lrand);
- MakeInt(i, &eventdesc);
- EVValD(&eventdesc, E_Lsub);
-#endif /* EventMon */
-
j = 1;
/*
* Work down chain list of list blocks and find the block that
@@ -363,11 +313,7 @@ operator{0,1} ? random(underef x -> dx)
while (i >= j + bp->lelem.nused) {
j += bp->lelem.nused;
bp = bp->lelem.listnext;
-#ifdef ListFix
- if (BlkType(bp) == T_List)
-#else /* ListFix */
if (bp == NULL)
-#endif /* ListFix */
syserr("list reference out of bounds in random");
}
/*
@@ -405,13 +351,6 @@ operator{0,1} ? random(underef x -> dx)
rval *= val;
n = (word)rval + 1;
-#ifdef EventMon
- EVValD(&dx, E_Trand);
- MakeInt(n, &eventdesc);
- EVValD(&eventdesc, E_Tsub);
-#endif /* EventMon */
-
-
/*
* Walk down the hash chains to find and return the nth element
* as a variable.
@@ -419,11 +358,7 @@ operator{0,1} ? random(underef x -> dx)
for (i = 0; i < HSegs && (seg = bp->table.hdir[i]) != NULL; i++)
for (j = segsize[i] - 1; j >= 0; j--)
for (ep = seg->hslots[j];
-#ifdef TableFix
- BlkType(ep) == T_Telem;
-#else /* TableFix */
ep != NULL;
-#endif /* TableFix */
ep = ep->telem.clink)
if (--n <= 0) {
Protect(tp = alctvtbl(&dx, &ep->telem.tref, ep->telem.hashnum), runerr(0));
@@ -456,11 +391,6 @@ operator{0,1} ? random(underef x -> dx)
rval *= val;
n = (word)rval + 1;
-#ifdef EventMon
- EVValD(&dx, E_Srand);
- MakeInt(n, &eventdesc);
-#endif /* EventMon */
-
/*
* Walk down the hash chains to find and return the nth element.
*/
@@ -497,43 +427,27 @@ operator{0,1} ? random(underef x -> dx)
*/
rval = RandVal;
rval *= val;
-
-#ifdef EventMon
- EVValD(&dx, E_Rrand);
- MakeInt(rval + 1, &eventdesc);
- EVValD(&eventdesc, E_Rsub);
-#endif /* EventMon */
-
return struct_var(&rec->fields[(word)rval], rec);
}
}
default: {
-#ifdef LargeInts
if !cnv:integer(dx) then
runerr(113, dx)
-#else /* LargeInts */
- if !cnv:C_integer(dx,v) then
- runerr(113, dx)
-#endif /* LargeInts */
-
abstract {
return integer ++ real
}
body {
double rval;
-
-#ifdef LargeInts
C_integer v;
if (Type(dx) == T_Lrgint) {
if (bigrand(&dx, &result) == Error) /* alcbignum failed */
runerr(0);
return result;
}
-
v = IntVal(dx);
-#endif /* LargeInts */
+
/*
* x is an integer, be sure that it's non-negative.
*/
@@ -690,12 +604,6 @@ operator{0,1} [] subsc(underef x -> dx,y)
register union block *bp; /* doesn't need to be tended */
struct b_list *lp; /* doesn't need to be tended */
-#ifdef EventMon
- EVValD(&dx, E_Lref);
- MakeInt(y, &eventdesc);
- EVValD(&eventdesc, E_Lsub);
-#endif /* EventMon */
-
/*
* Make sure that subscript y is in range.
*/
@@ -742,9 +650,6 @@ operator{0,1} [] subsc(underef x -> dx,y)
uword hn;
struct b_tvtbl *tp;
- EVValD(&dx, E_Tref);
- EVValD(&y, E_Tsub);
-
hn = hash(&y);
Protect(tp = alctvtbl(&dx, &y, hn), runerr(0));
return tvtbl(tp);
@@ -777,13 +682,6 @@ operator{0,1} [] subsc(underef x -> dx,y)
for(i=0; i<nf; i++) {
if (len == StrLen(bp2->proc.lnames[i]) &&
!strncmp(loc, StrLoc(bp2->proc.lnames[i]), len)) {
-
-#ifdef EventMon
- EVValD(&dx, E_Rref);
- MakeInt(i+1, &eventdesc);
- EVValD(&eventdesc, E_Rsub);
-#endif /* EventMon */
-
/*
* Found the field, return a pointer to it.
*/
@@ -802,13 +700,6 @@ operator{0,1} [] subsc(underef x -> dx,y)
i = cvpos(y, (word)(bp->record.recdesc->proc.nfields));
if (i == CvtFail || i > bp->record.recdesc->proc.nfields)
fail;
-
-#ifdef EventMon
- EVValD(&dx, E_Rref);
- MakeInt(i, &eventdesc);
- EVValD(&eventdesc, E_Rsub);
-#endif /* EventMon */
-
/*
* Locate the appropriate field and return a pointer to it.
*/