Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: kill-someobject
Changeset: r57849:e8aee8a86867
Date: 2012-10-07 20:17 +0200
http://bitbucket.org/pypy/pypy/changeset/e8aee8a86867/

Log:    (alex, arigo, fijal) kill kill kill

diff --git a/pypy/translator/c/extfunc.py b/pypy/translator/c/extfunc.py
--- a/pypy/translator/c/extfunc.py
+++ b/pypy/translator/c/extfunc.py
@@ -105,8 +105,6 @@
     yield ('RPYTHON_EXCEPTION_MATCH',  exceptiondata.fn_exception_match)
     yield ('RPYTHON_TYPE_OF_EXC_INST', exceptiondata.fn_type_of_exc_inst)
     yield ('RPYTHON_RAISE_OSERROR',    exceptiondata.fn_raise_OSError)
-    if db.cpython_extension:
-        yield ('RPYTHON_PYEXCCLASS2EXC', exceptiondata.fn_pyexcclass2exc)
 
     yield ('RPyExceptionOccurred1',    exctransformer.rpyexc_occured_ptr.value)
     yield ('RPyFetchExceptionType',    
exctransformer.rpyexc_fetch_type_ptr.value)
@@ -115,8 +113,7 @@
     yield ('RPyRaiseException',        exctransformer.rpyexc_raise_ptr.value)
 
     for pyexccls in exceptiondata.standardexceptions:
-        exc_llvalue = exceptiondata.fn_pyexcclass2exc(
-            lltype.pyobjectptr(pyexccls))
+        exc_llvalue = exceptiondata
         # strange naming here because the macro name must be
         # a substring of PyExc_%s
         name = pyexccls.__name__
diff --git a/pypy/translator/c/src/g_include.h 
b/pypy/translator/c/src/g_include.h
--- a/pypy/translator/c/src/g_include.h
+++ b/pypy/translator/c/src/g_include.h
@@ -23,10 +23,6 @@
 #define PY_LONG_LONG long long
 #endif
 
-#ifndef PYPY_STANDALONE
-#  include "src/pyobj.h"
-#endif
-
 #include "src/int.h"
 #include "src/char.h"
 #include "src/float.h"
diff --git a/pypy/translator/c/src/mem.h b/pypy/translator/c/src/mem.h
--- a/pypy/translator/c/src/mem.h
+++ b/pypy/translator/c/src/mem.h
@@ -103,7 +103,6 @@
                r = (restype) PyObject_Malloc(size);                    \
                if (r != NULL) {                                        \
                        memset((void*)r, 0, size);                      \
-                       COUNT_MALLOC;                                   \
                }                                                       \
        }
 
@@ -111,14 +110,11 @@
 
 #define OP_RAW_MALLOC(size, r, restype)  {                             \
                r = (restype) PyObject_Malloc(size);                    \
-               if (r != NULL) {                                        \
-                       COUNT_MALLOC;                                   \
-               }                                                       \
        }
 
 #endif
 
-#define OP_RAW_FREE(p, r) PyObject_Free(p); COUNT_FREE;
+#define OP_RAW_FREE(p, r) PyObject_Free(p);
 
 #define OP_RAW_MEMCLEAR(p, size, r) memset((void*)p, 0, size)
 
@@ -139,31 +135,6 @@
 
 #define OP_FREE(p)     OP_RAW_FREE(p, do_not_use)
 
-/*------------------------------------------------------------*/
-#ifndef COUNT_OP_MALLOCS
-/*------------------------------------------------------------*/
-
-#define COUNT_MALLOC   /* nothing */
-#define COUNT_FREE     /* nothing */
-
-/*------------------------------------------------------------*/
-#else /*COUNT_OP_MALLOCS*/
-/*------------------------------------------------------------*/
-
-static int count_mallocs=0, count_frees=0;
-
-#define COUNT_MALLOC   count_mallocs++
-#define COUNT_FREE     count_frees++
-
-PyObject* malloc_counters(PyObject* self, PyObject* args)
-{
-  return Py_BuildValue("ii", count_mallocs, count_frees);
-}
-
-/*------------------------------------------------------------*/
-#endif /*COUNT_OP_MALLOCS*/
-/*------------------------------------------------------------*/
-
 /* for Boehm GC */
 
 #ifdef USING_BOEHM_GC
diff --git a/pypy/translator/c/src/support.h b/pypy/translator/c/src/support.h
--- a/pypy/translator/c/src/support.h
+++ b/pypy/translator/c/src/support.h
@@ -20,18 +20,6 @@
 #define FAIL_OVF(msg) FAIL_EXCEPTION(PyExc_OverflowError, msg)
 #define FAIL_VAL(msg) FAIL_EXCEPTION(PyExc_ValueError, msg)
 #define FAIL_ZER(msg) FAIL_EXCEPTION(PyExc_ZeroDivisionError, msg)
-#define CFAIL()       RPyConvertExceptionFromCPython()
-
-/* the following macros are used by rpython/lltypesystem/rstr.py */
-#define PyString_FromRPyString(rpystr) \
-       PyString_FromStringAndSize(_RPyString_AsString(rpystr), 
RPyString_Size(rpystr))
-
-#define PyUnicode_FromRPyUnicode(rpystr) \
-       _PyUnicode_FromRPyUnicode(_RPyUnicode_AsUnicode(rpystr), 
RPyUnicode_Size(rpystr))
-
-#define PyString_ToRPyString(s, rpystr)                            \
-       memcpy(_RPyString_AsString(rpystr), PyString_AS_STRING(s), \
-               RPyString_Size(rpystr))
 
 /* Extra checks can be enabled with the RPY_ASSERT or RPY_LL_ASSERT
  * macros.  They differ in the level at which the tests are made.
@@ -104,416 +92,4 @@
 #  define RPyBareItem(array, index)          ((array)[index])
 #endif
 
-#ifdef PYPY_CPYTHON_EXTENSION
-
-/* prototypes */
-
-PyObject * gencfunc_descr_get(PyObject *func, PyObject *obj, PyObject *type);
-PyObject* PyList_Pack(int n, ...);
-PyObject* PyDict_Pack(int n, ...);
-#if PY_VERSION_HEX < 0x02040000   /* 2.4 */
-PyObject* PyTuple_Pack(int n, ...);
-#endif
-#if PY_VERSION_HEX >= 0x02030000   /* 2.3 */
-# define PyObject_GetItem1  PyObject_GetItem
-# define PyObject_SetItem1  PyObject_SetItem
-#else
-PyObject* PyObject_GetItem1(PyObject* obj, PyObject* index);
-PyObject* PyObject_SetItem1(PyObject* obj, PyObject* index, PyObject* v);
-#endif
-PyObject* CallWithShape(PyObject* callable, PyObject* shape, ...);
-PyObject* decode_arg(PyObject* fname, int position, PyObject* name,
-                           PyObject* vargs, PyObject* vkwds, PyObject* def);
-int check_no_more_arg(PyObject* fname, int n, PyObject* vargs);
-int check_self_nonzero(PyObject* fname, PyObject* self);
-PyObject *PyTuple_GetItem_WithIncref(PyObject *tuple, int index);
-int PyTuple_SetItem_WithIncref(PyObject *tuple, int index, PyObject *o);
-int PySequence_Contains_with_exc(PyObject *seq, PyObject *ob);
-PyObject* _PyUnicode_FromRPyUnicode(wchar_t *items, long length);
-
-/* implementations */
-
-#ifndef PYPY_NOT_MAIN_FILE
-
-/* we need a subclass of 'builtin_function_or_method' which can be used
-   as methods: builtin function objects that can be bound on instances */
-PyObject *
-gencfunc_descr_get(PyObject *func, PyObject *obj, PyObject *type)
-{
-       if (obj == Py_None)
-               obj = NULL;
-       return PyMethod_New(func, obj, type);
-}
-static PyTypeObject PyGenCFunction_Type = {
-       PyObject_HEAD_INIT(NULL)
-       0,
-       "pypy_generated_function",
-       sizeof(PyCFunctionObject),
-       0,
-       0,                                      /* tp_dealloc */
-       0,                                      /* tp_print */
-       0,                                      /* tp_getattr */
-       0,                                      /* tp_setattr */
-       0,                                      /* tp_compare */
-       0,                                      /* tp_repr */
-       0,                                      /* tp_as_number */
-       0,                                      /* tp_as_sequence */
-       0,                                      /* tp_as_mapping */
-       0,                                      /* tp_hash */
-       0,                                      /* tp_call */
-       0,                                      /* tp_str */
-       0,                                      /* tp_getattro */
-       0,                                      /* tp_setattro */
-       0,                                      /* tp_as_buffer */
-       Py_TPFLAGS_DEFAULT,                     /* tp_flags */
-       0,                                      /* tp_doc */
-       0,                                      /* tp_traverse */
-       0,                                      /* tp_clear */
-       0,                                      /* tp_richcompare */
-       0,                                      /* tp_weaklistoffset */
-       0,                                      /* tp_iter */
-       0,                                      /* tp_iternext */
-       0,                                      /* tp_methods */
-       0,                                      /* tp_members */
-       0,                                      /* tp_getset */
-       /*&PyCFunction_Type set below*/ 0,      /* tp_base */
-       0,                                      /* tp_dict */
-       gencfunc_descr_get,                     /* tp_descr_get */
-       0,                                      /* tp_descr_set */
-};
-
-
-/*** misc support functions ***/
-
-PyObject* PyList_Pack(int n, ...)
-{
-       int i;
-       PyObject *o;
-       PyObject *result;
-       va_list vargs;
-
-       va_start(vargs, n);
-       result = PyList_New(n);
-       if (result == NULL) {
-               return NULL;
-       }
-       for (i = 0; i < n; i++) {
-               o = va_arg(vargs, PyObject *);
-               Py_INCREF(o);
-               PyList_SET_ITEM(result, i, o);
-       }
-       va_end(vargs);
-       return result;
-}
-
-PyObject* PyDict_Pack(int n, ...)
-{
-       int i;
-       PyObject *key, *val;
-       PyObject *result;
-       va_list vargs;
-
-       va_start(vargs, n);
-       result = PyDict_New();
-       if (result == NULL) {
-               return NULL;
-       }
-       for (i = 0; i < n; i++) {
-               key = va_arg(vargs, PyObject *);
-               val = va_arg(vargs, PyObject *);
-               if (PyDict_SetItem(result, key, val) < 0) {
-                       Py_DECREF(result);
-                       return NULL;
-               }
-       }
-       va_end(vargs);
-       return result;
-}
-
-#if PY_VERSION_HEX < 0x02040000   /* 2.4 */
-PyObject* PyTuple_Pack(int n, ...)
-{
-       int i;
-       PyObject *o;
-       PyObject *result;
-       PyObject **items;
-       va_list vargs;
-
-       va_start(vargs, n);
-       result = PyTuple_New(n);
-       if (result == NULL) {
-               return NULL;
-       }
-       items = ((PyTupleObject *)result)->ob_item;
-       for (i = 0; i < n; i++) {
-               o = va_arg(vargs, PyObject *);
-               Py_INCREF(o);
-               items[i] = o;
-       }
-       va_end(vargs);
-       return result;
-}
-#endif
-
-#if PY_VERSION_HEX < 0x02030000   /* 2.3 */
-/* for Python 2.2 only */
-PyObject* PyObject_GetItem1(PyObject* obj, PyObject* index)
-{
-       int start, stop, step;
-       if (!PySlice_Check(index)) {
-               return PyObject_GetItem(obj, index);
-       }
-       if (((PySliceObject*) index)->start == Py_None) {
-               start = -INT_MAX-1;
-       } else {
-               start = PyInt_AsLong(((PySliceObject*) index)->start);
-               if (start == -1 && PyErr_Occurred()) {
-                       return NULL;
-               }
-       }
-       if (((PySliceObject*) index)->stop == Py_None) {
-               stop = INT_MAX;
-       } else {
-               stop = PyInt_AsLong(((PySliceObject*) index)->stop);
-               if (stop == -1 && PyErr_Occurred()) {
-                       return NULL;
-               }
-       }
-       if (((PySliceObject*) index)->step != Py_None) {
-               step = PyInt_AsLong(((PySliceObject*) index)->step);
-               if (step == -1 && PyErr_Occurred()) {
-                       return NULL;
-               }
-               if (step != 1) {
-                       PyErr_SetString(PyExc_ValueError,
-                                       "obj[slice]: no step allowed");
-                       return NULL;
-               }
-       }
-       return PySequence_GetSlice(obj, start, stop);
-}
-
-PyObject* PyObject_SetItem1(PyObject* obj, PyObject* index, PyObject* v)
-{
-       int start, stop, step;
-       if (!PySlice_Check(index)) {
-               return PyObject_SetItem(obj, index, v);
-       }
-       if (((PySliceObject*) index)->start == Py_None) {
-               start = -INT_MAX-1;
-       } else {
-               start = PyInt_AsLong(((PySliceObject*) index)->start);
-               if (start == -1 && PyErr_Occurred()) {
-                       return NULL;
-               }
-       }
-       if (((PySliceObject*) index)->stop == Py_None) {
-               stop = INT_MAX;
-       } else {
-               stop = PyInt_AsLong(((PySliceObject*) index)->stop);
-               if (stop == -1 && PyErr_Occurred()) {
-                       return NULL;
-               }
-       }
-       if (((PySliceObject*) index)->step != Py_None) {
-               step = PyInt_AsLong(((PySliceObject*) index)->step);
-               if (step == -1 && PyErr_Occurred()) {
-                       return NULL;
-               }
-               if (step != 1) {
-                       PyErr_SetString(PyExc_ValueError,
-                                       "obj[slice]: no step allowed");
-                       return NULL;
-               }
-       }
-       return PySequence_SetSlice(obj, start, stop, v);
-}
-#endif
-
-PyObject* CallWithShape(PyObject* callable, PyObject* shape, ...)
-{
-       /* XXX the 'shape' argument is a tuple as specified by
-          XXX pypy.interpreter.argument.fromshape().  This code should
-          XXX we made independent on the format of the 'shape' later... */
-       PyObject* result = NULL;
-       PyObject* t = NULL;
-       PyObject* d = NULL;
-       PyObject* o;
-       PyObject* key;
-       PyObject* t2;
-       int i, nargs, nkwds, starflag, starstarflag;
-       va_list vargs;
-
-       if (!PyTuple_Check(shape) ||
-           PyTuple_GET_SIZE(shape) != 4 ||
-           !PyInt_Check(PyTuple_GET_ITEM(shape, 0)) ||
-           !PyTuple_Check(PyTuple_GET_ITEM(shape, 1)) ||
-           !PyInt_Check(PyTuple_GET_ITEM(shape, 2)) ||
-           !PyInt_Check(PyTuple_GET_ITEM(shape, 3))) {
-               Py_FatalError("in genc.h: invalid 'shape' argument");
-       }
-       nargs = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 0));
-       nkwds = PyTuple_GET_SIZE(PyTuple_GET_ITEM(shape, 1));
-       starflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 2));
-       starstarflag = PyInt_AS_LONG(PyTuple_GET_ITEM(shape, 3));
-
-       va_start(vargs, shape);
-       t = PyTuple_New(nargs);
-       if (t == NULL)
-               goto finally;
-       for (i = 0; i < nargs; i++) {
-               o = va_arg(vargs, PyObject *);
-               Py_INCREF(o);
-               PyTuple_SET_ITEM(t, i, o);
-       }
-       if (nkwds) {
-               d = PyDict_New();
-               if (d == NULL)
-                       goto finally;
-               for (i = 0; i < nkwds; i++) {
-                       o = va_arg(vargs, PyObject *);
-                       key = PyTuple_GET_ITEM(PyTuple_GET_ITEM(shape, 1), i);
-                       if (PyDict_SetItem(d, key, o) < 0)
-                               goto finally;
-               }
-       }
-       if (starflag) {
-               o = va_arg(vargs, PyObject *);
-               o = PySequence_Tuple(o);
-               if (o == NULL)
-                       goto finally;
-               t2 = PySequence_Concat(t, o);
-               Py_DECREF(o);
-               Py_DECREF(t);
-               t = t2;
-               if (t == NULL)
-                       goto finally;
-       }
-       if (starstarflag) {
-               int len1, len2, len3;
-               o = va_arg(vargs, PyObject *);
-               len1 = PyDict_Size(d);
-               len2 = PyDict_Size(o);
-               if (len1 < 0 || len2 < 0)
-                       goto finally;
-               if (PyDict_Update(d, o) < 0)
-                       goto finally;
-               len3 = PyDict_Size(d);
-               if (len1 + len2 != len3) {
-                       PyErr_SetString(PyExc_TypeError,
-                                       "genc.h: duplicate keyword arguments");
-                       goto finally;
-               }
-       }
-       va_end(vargs);
-
-       result = PyObject_Call(callable, t, d);
-
- finally:
-       Py_XDECREF(d);
-       Py_XDECREF(t);
-       return result;
-}
-
-PyObject* decode_arg(PyObject* fname, int position, PyObject* name,
-                           PyObject* vargs, PyObject* vkwds, PyObject* def)
-{
-       PyObject* result;
-       int size = PyTuple_Size(vargs);
-       if (size < 0)
-               return NULL;
-       if (vkwds != NULL) {
-               result = PyDict_GetItem(vkwds, name);
-               if (result != NULL) {
-                       if (position < size) {
-                               PyErr_Format(PyExc_TypeError,
-                                            "%s() got duplicate value for "
-                                            "its '%s' argument",
-                                            PyString_AS_STRING(fname),
-                                            PyString_AS_STRING(name));
-                               return NULL;
-                       }
-                       Py_INCREF(result);
-                       return result;
-               }
-       }
-       if (position < size) {
-               /* common case */
-               result = PyTuple_GET_ITEM(vargs, position);
-               Py_INCREF(result);
-               return result;
-       }
-       if (def != NULL) {
-               Py_INCREF(def);
-               return def;
-       }
-       PyErr_Format(PyExc_TypeError, "%s() got only %d argument(s)",
-                    PyString_AS_STRING(fname),
-                    position);
-       return NULL;
-}
-
-int check_no_more_arg(PyObject* fname, int n, PyObject* vargs)
-{
-       int size = PyTuple_Size(vargs);
-       if (size < 0)
-               return -1;
-       if (size > n) {
-               PyErr_Format(PyExc_TypeError,
-                            "%s() got %d argument(s), expected %d",
-                            PyString_AS_STRING(fname),
-                            size, n);
-               return -1;
-       }
-       return 0;
-}
-
-int check_self_nonzero(PyObject* fname, PyObject* self)
-{
-       if (!self) {
-                   PyErr_Format(PyExc_TypeError,
-                               "%s() expects instance first arg",
-                               PyString_AS_STRING(fname));
-                   return -1;
-       }
-       return 0;
-}
-               
-/************************************************************/
-
-PyObject *PyTuple_GetItem_WithIncref(PyObject *tuple, int index)
-{
-       PyObject *result = PyTuple_GetItem(tuple, index);
-       Py_XINCREF(result);
-       return result;
-}
-
-int PyTuple_SetItem_WithIncref(PyObject *tuple, int index, PyObject *o)
-{
-       Py_INCREF(o);
-       return PyTuple_SetItem(tuple, index, o);
-}
-
-int PySequence_Contains_with_exc(PyObject *seq, PyObject *ob)
-{
-       int ret = PySequence_Contains(seq, ob);
-       
-       if (ret < 0) 
-               CFAIL();
-       return ret;
-}
-
-PyObject* _PyUnicode_FromRPyUnicode(wchar_t *items, long length)
-{
-    PyObject *u = PyUnicode_FromUnicode(NULL, length);
-    long i;
-    for (i=0; i<length; i++) {
-        /* xxx possibly silently truncate the unichars */
-        PyUnicode_AS_UNICODE(u)[i] = items[i];
-    }
-    return u;
-}
-
-#endif /* PYPY_STANDALONE */
-
 #endif /* PYPY_NOT_MAIN_FILE */
diff --git a/pypy/translator/driver.py b/pypy/translator/driver.py
--- a/pypy/translator/driver.py
+++ b/pypy/translator/driver.py
@@ -172,7 +172,7 @@
     def _maybe_skip(self):
         maybe_skip = []
         if self._disabled:
-             for goal in  self.backend_select_goals(self._disabled):
+             for goal in self.backend_select_goals(self._disabled):
                  maybe_skip.extend(self._depending_on_closure(goal))
         return dict.fromkeys(maybe_skip).keys()
 
@@ -475,12 +475,16 @@
             standalone = self.standalone
 
             if standalone:
-                from pypy.translator.c.genc import CStandaloneBuilder as 
CBuilder
+                from pypy.translator.c.genc import CStandaloneBuilder
+                cbuilder = CStandaloneBuilder(self.translator, 
self.entry_point,
+                                              config=self.config,
+                          secondary_entrypoints=self.secondary_entrypoints)
             else:
-                from pypy.translator.c.genc import CExtModuleBuilder as 
CBuilder
-            cbuilder = CBuilder(self.translator, self.entry_point,
-                                config=self.config,
-                                
secondary_entrypoints=self.secondary_entrypoints)
+                from pypy.translator.c.dlltool import CLibraryBuilder
+                cbuilder = CLibraryBuilder(self.translator, self.entry_point,
+                                           functions=[(self.entry_point, 
None)],
+                                           name='lib',
+                                           config=self.config)
         if not standalone:     # xxx more messy
             cbuilder.modulename = self.extmod_name
         database = cbuilder.build_database()
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to