diff --git a/Objects/classobject.c b/Objects/classobject.c
index 40ff983..60214a4 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -428,27 +428,48 @@
 /* Instance objects */
 
 PyObject *
-PyInstance_New(PyObject *class, PyObject *arg, PyObject *kw)
+PyInstance_NewRaw(PyObject *klass, PyObject *dict)
+{
+	PyInstanceObject *inst;
+
+	if (!PyClass_Check(klass)) {
+		PyErr_BadInternalCall();
+		return NULL;
+	}
+	if (dict == NULL) {
+		dict = PyDict_New();
+		if (dict == NULL)
+			return NULL;
+	}
+	else {
+		if (!PyDict_Check(dict)) {
+			PyErr_BadInternalCall();
+			return NULL;
+		}
+		Py_INCREF(dict);
+	}
+	inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type);
+	if (inst == NULL) {
+		Py_DECREF(dict);
+		return NULL;
+	}
+	Py_INCREF(klass);
+	inst->in_class = (PyClassObject *)klass;
+	inst->in_dict = dict;
+	PyObject_GC_Init(inst);
+	return (PyObject *)inst;
+}
+
+PyObject *
+PyInstance_New(PyObject *klass, PyObject *arg, PyObject *kw)
 {
 	register PyInstanceObject *inst;
 	PyObject *init;
 	static PyObject *initstr;
-	if (!PyClass_Check(class)) {
-		PyErr_BadInternalCall();
-		return NULL;
-	}
-	inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type);
+
+	inst = (PyInstanceObject *) PyInstance_NewRaw(klass, NULL);
 	if (inst == NULL)
 		return NULL;
-	inst->in_dict = PyDict_New();
-	if (inst->in_dict == NULL) {
-		inst = (PyInstanceObject *) PyObject_AS_GC(inst);
-		PyObject_DEL(inst);
-		return NULL;
-	}
-	Py_INCREF(class);
-	inst->in_class = (PyClassObject *)class;
-	PyObject_GC_Init(inst);
 	if (initstr == NULL)
 		initstr = PyString_InternFromString("__init__");
 	init = instance_getattr2(inst, initstr);
