Commit 1566a17a authored by Tim Peters's avatar Tim Peters

Get hotshot closer to compiling on Windows.

Still broken:  GETTIMEOFDAY.  This macro obviously isn't being defined
on Windows, so there's logic errors here I'd rather Fred untangled.
parent 3e996436
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#ifdef MS_WIN32 #ifdef MS_WIN32
#include <windows.h> #include <windows.h>
#include <largeint.h> #include <largeint.h>
#include <direct.h> /* for getcwd() */
typedef LARGE_INTEGER hs_time; typedef LARGE_INTEGER hs_time;
#else #else
#ifndef HAVE_GETTIMEOFDAY #ifndef HAVE_GETTIMEOFDAY
...@@ -41,6 +42,14 @@ typedef struct timeval hs_time; ...@@ -41,6 +42,14 @@ typedef struct timeval hs_time;
#define BUFFERSIZE 10240 #define BUFFERSIZE 10240
#ifndef PATH_MAX
# ifdef MAX_PATH
# define PATH_MAX MAX_PATH
# else
# error "Need a defn. for PATH_MAX in _hotshot.c"
# endif
#endif
typedef struct { typedef struct {
PyObject_HEAD PyObject_HEAD
PyObject *filemap; PyObject *filemap;
...@@ -365,6 +374,7 @@ logreader_tp_iternext(LogReaderObject *self) ...@@ -365,6 +374,7 @@ logreader_tp_iternext(LogReaderObject *self)
goto restart; goto restart;
} }
default: default:
;
} }
if (err == ERR_EOF && oldindex != 0) { if (err == ERR_EOF && oldindex != 0) {
/* It looks like we ran out of data before we had it all; this /* It looks like we ran out of data before we had it all; this
...@@ -470,7 +480,7 @@ flush_data(ProfilerObject *self) ...@@ -470,7 +480,7 @@ flush_data(ProfilerObject *self)
{ {
/* Need to dump data to the log file... */ /* Need to dump data to the log file... */
size_t written = fwrite(self->buffer, 1, self->index, self->logfp); size_t written = fwrite(self->buffer, 1, self->index, self->logfp);
if (written == self->index) if (written == (size_t)self->index)
self->index = 0; self->index = 0;
else { else {
memmove(self->buffer, &self->buffer[written], memmove(self->buffer, &self->buffer[written],
...@@ -723,7 +733,7 @@ tracer_callback(ProfilerObject *self, PyFrameObject *frame, int what, ...@@ -723,7 +733,7 @@ tracer_callback(ProfilerObject *self, PyFrameObject *frame, int what,
case PyTrace_RETURN: case PyTrace_RETURN:
pack_exit(self, get_tdelta(self)); pack_exit(self, get_tdelta(self));
break; break;
case PyTrace_LINE: case PyTrace_LINE:
if (self->linetimings) if (self->linetimings)
pack_lineno_tdelta(self, frame->f_lineno, get_tdelta(self)); pack_lineno_tdelta(self, frame->f_lineno, get_tdelta(self));
else else
...@@ -1259,7 +1269,7 @@ hotshot_profiler(PyObject *unused, PyObject *args) ...@@ -1259,7 +1269,7 @@ hotshot_profiler(PyObject *unused, PyObject *args)
self->index = 0; self->index = 0;
self->active = 0; self->active = 0;
self->next_fileno = 0; self->next_fileno = 0;
self->logfp = NULL; self->logfp = NULL;
self->logfilename = PyTuple_GET_ITEM(args, 0); self->logfilename = PyTuple_GET_ITEM(args, 0);
Py_INCREF(self->logfilename); Py_INCREF(self->logfilename);
self->filemap = PyDict_New(); self->filemap = PyDict_New();
......
...@@ -44,6 +44,7 @@ extern void init_locale(void); ...@@ -44,6 +44,7 @@ extern void init_locale(void);
extern void init_codecs(void); extern void init_codecs(void);
extern void initxreadlines(void); extern void initxreadlines(void);
extern void init_weakref(void); extern void init_weakref(void);
extern void init_hotshot(void);
extern void initxxsubtype(void); extern void initxxsubtype(void);
/* XXX tim: what's the purpose of ADDMODULE MARKER? */ /* XXX tim: what's the purpose of ADDMODULE MARKER? */
...@@ -98,6 +99,7 @@ struct _inittab _PyImport_Inittab[] = { ...@@ -98,6 +99,7 @@ struct _inittab _PyImport_Inittab[] = {
{"_codecs", init_codecs}, {"_codecs", init_codecs},
{"xreadlines", initxreadlines}, {"xreadlines", initxreadlines},
{"_weakref", init_weakref}, {"_weakref", init_weakref},
{"_hotshot", init_hotshot},
{"xxsubtype", initxxsubtype}, {"xxsubtype", initxxsubtype},
......
...@@ -180,6 +180,21 @@ SOURCE=..\Modules\_codecsmodule.c ...@@ -180,6 +180,21 @@ SOURCE=..\Modules\_codecsmodule.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\Modules\_hotshot.c
!IF "$(CFG)" == "pythoncore - Win32 Release"
!ELSEIF "$(CFG)" == "pythoncore - Win32 Debug"
!ELSEIF "$(CFG)" == "pythoncore - Win32 Alpha Debug"
!ELSEIF "$(CFG)" == "pythoncore - Win32 Alpha Release"
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\Modules\_localemodule.c SOURCE=..\Modules\_localemodule.c
!IF "$(CFG)" == "pythoncore - Win32 Release" !IF "$(CFG)" == "pythoncore - Win32 Release"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment