diff options
| author | Kevin B Kenny <kennykb@acm.org> | 2017-03-15 02:40:56 (GMT) |
|---|---|---|
| committer | Kevin B Kenny <kennykb@acm.org> | 2017-03-15 02:40:56 (GMT) |
| commit | 488735e4a2d28d868ec93041f95eab1a7234e2ed (patch) | |
| tree | cc56a92667132923a5a6db8320ad3e2df4a0fd60 /generic/tclExecute.c | |
| parent | a3f676461cb88357d3335f2ec0a79cdeaa35eb4f (diff) | |
| parent | 43d597b30f23c04837758d424f4baa7478b7202a (diff) | |
| download | tcl-488735e4a2d28d868ec93041f95eab1a7234e2ed.zip tcl-488735e4a2d28d868ec93041f95eab1a7234e2ed.tar.gz tcl-488735e4a2d28d868ec93041f95eab1a7234e2ed.tar.bz2 | |
Compile [clock clicks], [clock microseconds], [clock milliseconds] and [clock seconds].
Diffstat (limited to 'generic/tclExecute.c')
| -rw-r--r-- | generic/tclExecute.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index e3fa730..f695499 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -7664,6 +7664,39 @@ TEBCresume( * ----------------------------------------------------------------- */ + case INST_CLOCK_READ: + { /* Read the wall clock */ + Tcl_WideInt wval; + Tcl_Time now; + switch(TclGetUInt1AtPtr(pc+1)) { + case 0: /* clicks */ +#ifdef TCL_WIDE_CLICKS + wval = TclpGetWideClicks(); +#else + wval = (Tcl_WideInt) TclpGetClicks(); +#endif + break; + case 1: /* microseconds */ + Tcl_GetTime(&now); + wval = (Tcl_WideInt) now.sec * 1000000 + now.usec; + break; + case 2: /* milliseconds */ + Tcl_GetTime(&now); + wval = (Tcl_WideInt) now.sec * 1000 + now.usec / 1000; + break; + case 3: /* seconds */ + Tcl_GetTime(&now); + wval = (Tcl_WideInt) now.sec; + break; + default: + Tcl_Panic("clockRead instruction with unknown clock#"); + } + /* TclNewWideObj(objResultPtr, wval); doesn't exist */ + objResultPtr = Tcl_NewWideIntObj(wval); + TRACE_WITH_OBJ(("=> "), objResultPtr); + NEXT_INST_F(2, 0, 1); + } + default: Tcl_Panic("TclNRExecuteByteCode: unrecognized opCode %u", *pc); } /* end of switch on opCode */ |
