=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/time.c,v retrieving revision 1.2 retrieving revision 1.7 diff -u -p -r1.2 -r1.7 --- OpenXM_contrib2/asir2000/builtin/time.c 2000/08/21 08:31:21 1.2 +++ OpenXM_contrib2/asir2000/builtin/time.c 2009/03/16 16:43:02 1.7 @@ -23,7 +23,7 @@ * shall be made on your publication or presentation in any form of the * results obtained by use of the SOFTWARE. * (4) In the event that you modify the SOFTWARE, you shall notify FLL by - * e-mail at risa-admin@flab.fujitsu.co.jp of the detailed specification + * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification * for such modification or the source code of the modified part of the * SOFTWARE. * @@ -45,17 +45,19 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/builtin/time.c,v 1.1.1.1 1999/12/03 07:39:07 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/time.c,v 1.6 2008/09/11 15:17:55 ohara Exp $ */ #include "ca.h" #include "parse.h" void Ptime(), Pcputime(), Pcurrenttime(), Ptstart(), Ptstop(); +void Pdcurrenttime(); struct ftab time_tab[] = { {"time",Ptime,0}, {"cputime",Pcputime,1}, {"currenttime",Pcurrenttime,0}, + {"dcurrenttime",Pdcurrenttime,0}, {"tstart",Ptstart,0}, {"tstop",Ptstop,0}, {0,0,0}, @@ -73,6 +75,14 @@ Q *rp; t = (int)get_current_time(); STOQ(t,*rp); } +void Pdcurrenttime(rp) +Real *rp; +{ + double t; + + t = get_current_time(); MKReal(t,*rp); +} + void Ptstart(rp) pointer *rp; { @@ -103,12 +113,24 @@ LIST *listp; Real re,rg,rr; NODE a,b,w,r; Q words; - int t; + long t; + int u,l; + N n; double rtime; double get_rtime(); rtime = get_rtime(); MKReal(rtime,rr); - t = get_allocwords(); STOQ(t,words); + t = get_allocwords(); +#if SIZEOF_LONG == 8 + u = t>>32; l = t&(0xffffffff); + if ( !u ) STOQ(l,words); + else { + n = NALLOC(2); PL(n)=2; BD(n)[0] = l; BD(n)[1] = u; + NTOQ(n,1,words); + } +#else + STOQ(t,words); +#endif get_eg(&eg); MKReal(eg.exectime,re); MKReal(eg.gctime,rg); MKNODE(r,rr,0); MKNODE(w,words,r); MKNODE(a,rg,w); MKNODE(b,re,a); MKLIST(*listp,b);