Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 34442:683719e04218 legacy-trunk
Change the name of the macro used by --with-tsc builds to the less
inscrutable READ_TIMESTAMP.
| author | Michael W. Hudson <mwh@python.net> |
|---|---|
| date | Tue, 18 Jan 2005 15:56:11 +0000 |
| parents | 8a8d844767b6 |
| children | 71fd7ee4b7f5 |
line wrap: on
line diff
--- a/Python/ceval.c Tue Jan 18 15:53:59 2005 +0000 +++ b/Python/ceval.c Tue Jan 18 15:56:11 2005 +0000 @@ -17,8 +17,10 @@ #include <ctype.h> #ifndef WITH_TSC -#define rdtscll(var) -#else /*WITH_TSC defined*/ + +#define READ_TIMESTAMP(var) + +#else typedef unsigned long long uint64; @@ -26,7 +28,7 @@ section should work for GCC on any PowerPC platform, irrespective of OS. POWER? Who knows :-) */ -#define rdtscll(var) ppc_getcounter(&var) +#define READ_TIMESTAMP(var) ppc_getcounter(&var) static void ppc_getcounter(uint64 *v) @@ -45,9 +47,10 @@ ((long*)(v))[1] = tb; } -#else /* this section is for linux/x86 */ - -#include <asm/msr.h> +#else /* this is for linux/x86 (and probably any other GCC/x86 combo) */ + +#define READ_TIMESTAMP(val) \ + __asm__ __volatile__("rdtsc" : "=A" (val)) #endif @@ -575,10 +578,10 @@ uint64 inst0, inst1, loop0, loop1, intr0 = 0, intr1 = 0; int ticked = 0; - rdtscll(inst0); - rdtscll(inst1); - rdtscll(loop0); - rdtscll(loop1); + READ_TIMESTAMP(inst0); + READ_TIMESTAMP(inst1); + READ_TIMESTAMP(loop0); + READ_TIMESTAMP(loop1); /* shut up the compiler */ opcode = 0; @@ -748,7 +751,7 @@ or a continue, preventing inst1 from being set on the way out of the loop. */ - rdtscll(inst1); + READ_TIMESTAMP(inst1); loop1 = inst1; } dump_tsc(opcode, ticked, inst0, inst1, loop0, loop1, @@ -757,7 +760,7 @@ inst1 = 0; intr0 = 0; intr1 = 0; - rdtscll(loop0); + READ_TIMESTAMP(loop0); #endif assert(stack_pointer >= f->f_valuestack); /* else underflow */ assert(STACK_LEVEL() <= f->f_stacksize); /* else overflow */ @@ -879,7 +882,7 @@ #endif /* Main switch on opcode */ - rdtscll(inst0); + READ_TIMESTAMP(inst0); switch (opcode) { @@ -1638,9 +1641,9 @@ v = SECOND(); u = THIRD(); STACKADJ(-3); - rdtscll(intr0); + READ_TIMESTAMP(intr0); err = exec_statement(f, u, v, w); - rdtscll(intr1); + READ_TIMESTAMP(intr1); Py_DECREF(u); Py_DECREF(v); Py_DECREF(w); @@ -2016,9 +2019,9 @@ x = NULL; break; } - rdtscll(intr0); + READ_TIMESTAMP(intr0); x = PyEval_CallObject(x, w); - rdtscll(intr1); + READ_TIMESTAMP(intr1); Py_DECREF(w); SET_TOP(x); if (x != NULL) continue; @@ -2032,9 +2035,9 @@ "no locals found during 'import *'"); break; } - rdtscll(intr0); + READ_TIMESTAMP(intr0); err = import_all_from(x, v); - rdtscll(intr1); + READ_TIMESTAMP(intr1); PyFrame_LocalsToFast(f, 0); Py_DECREF(v); if (err == 0) continue; @@ -2043,9 +2046,9 @@ case IMPORT_FROM: w = GETITEM(names, oparg); v = TOP(); - rdtscll(intr0); + READ_TIMESTAMP(intr0); x = import_from(v, w); - rdtscll(intr1); + READ_TIMESTAMP(intr1); PUSH(x); if (x != NULL) continue; break; @@ -2199,9 +2202,9 @@ } else Py_INCREF(func); sp = stack_pointer; - rdtscll(intr0); + READ_TIMESTAMP(intr0); x = ext_do_call(func, &sp, flags, na, nk); - rdtscll(intr1); + READ_TIMESTAMP(intr1); stack_pointer = sp; Py_DECREF(func); @@ -2314,7 +2317,7 @@ on_error: - rdtscll(inst1); + READ_TIMESTAMP(inst1); /* Quickly continue if no error occurred */ @@ -2327,7 +2330,7 @@ "XXX undetected error\n"); else { #endif - rdtscll(loop1); + READ_TIMESTAMP(loop1); continue; /* Normal, fast path */ #ifdef CHECKEXC } @@ -2446,7 +2449,7 @@ if (why != WHY_NOT) break; - rdtscll(loop1); + READ_TIMESTAMP(loop1); } /* main loop */ @@ -3543,9 +3546,9 @@ else { PyObject *callargs; callargs = load_args(pp_stack, na); - rdtscll(*pintr0); + READ_TIMESTAMP(*pintr0); C_TRACE(x=PyCFunction_Call(func,callargs,NULL)); - rdtscll(*pintr1); + READ_TIMESTAMP(*pintr1); Py_XDECREF(callargs); } } else { @@ -3563,12 +3566,12 @@ n++; } else Py_INCREF(func); - rdtscll(*pintr0); + READ_TIMESTAMP(*pintr0); if (PyFunction_Check(func)) x = fast_function(func, pp_stack, n, na, nk); else x = do_call(func, pp_stack, na, nk); - rdtscll(*pintr1); + READ_TIMESTAMP(*pintr1); Py_DECREF(func); }
