Cleanup:
- fix bug in Py_MakePendingCalls() with threading
- fix return type of do_raise
- remove build_slice (same as PySlice_New)
- remove code inside #if 0
- remove code inside #ifdef CHECK_STACK
- remove code inside #ifdef SUPPORT_OBSOLETE_ACCESS
- comment about newimp.py should refer to ni.py
diff --git a/Python/ceval.c b/Python/ceval.c
index ea71c97..accb56e 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -33,7 +33,6 @@
 
 /* XXX TO DO:
    XXX how to pass arguments to call_trace?
-   XXX totally get rid of access stuff
    XXX speed up searching for keywords by using a dictionary
    XXX document it!
    */
@@ -66,7 +65,6 @@
 				 object **, int,
 				 object **, int,
 				 object *));
-static int do_raise PROTO((object *, object *, object *));
 #ifdef LLTRACE
 static int prtrace PROTO((object *, char *));
 #endif
@@ -102,9 +100,6 @@
 static object *cmp_outcome PROTO((int, object *, object *));
 static int import_from PROTO((object *, object *, object *));
 static object *build_class PROTO((object *, object *, object *));
-#ifdef SUPPORT_OBSOLETE_ACCESS
-static int access_statement PROTO((object *, object *, frameobject *));
-#endif
 static int exec_statement PROTO((object *, object *, object *));
 static object *find_from_args PROTO((frameobject *, int));
 
@@ -238,7 +233,7 @@
 {
 	static int busy = 0;
 #ifdef WITH_THREAD
-	if (get_thread_ident() != main_thread) {
+	if (main_thread && get_thread_ident() != main_thread) {
 		ticker = 0; /* We're not done yet */
 		return 0;
 	}
@@ -279,6 +274,8 @@
 		WHY_BREAK	/* 'break' statement */
 };
 
+static enum why_code do_raise PROTO((object *, object *, object *));
+
 
 /* Backward compatible interface */
 
@@ -333,9 +330,6 @@
 	register frameobject *f; /* Current frame */
 	register object **fastlocals = NULL;
 	object *retval = NULL;	/* Return value */
-#ifdef SUPPORT_OBSOLETE_ACCESS
-	int defmode = 0;	/* Default access mode for new variables */
-#endif
 #ifdef LLTRACE
 	int lltrace;
 #endif
@@ -364,11 +358,6 @@
 #define BASIC_PUSH(v)	(*stack_pointer++ = (v))
 #define BASIC_POP()	(*--stack_pointer)
 
-#if 0
-#define CHECK_STACK(n)	(STACK_LEVEL() + (n) < f->f_nvalues || \
-			  (stack_pointer = extend_stack(f, STACK_LEVEL(), n)))
-#endif
-
 #ifdef LLTRACE
 #define PUSH(v)		(BASIC_PUSH(v), lltrace && prtrace(TOP(), "push"))
 #define POP()		(lltrace && prtrace(TOP(), "pop"), BASIC_POP())
@@ -625,13 +614,6 @@
 		}
 #endif
 
-#ifdef CHECK_STACK
-		if (!CHECK_STACK(3)) {
-			x = NULL;
-			break;
-		}
-#endif
-
 		/* Main switch on opcode */
 		
 		switch (opcode) {
@@ -1060,29 +1042,6 @@
 				err_setstr(SystemError, "no locals");
 				break;
 			}
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			u = dict2lookup(x, w);
-			if (u == NULL) {
-				if (defmode != 0) {
-					if (v != None)
-						u = (object *)v->ob_type;
-					else
-						u = NULL;
-					x = newaccessobject(v, x,
-							    (typeobject *)u,
-							    defmode);
-					DECREF(v);
-					if (x == NULL)
-						break;
-					v = x;
-				}
-			}
-			else if (is_accessobject(u)) {
-				err = setaccessvalue(u, x, v);
-				DECREF(v);
-				break;
-			}
-#endif
 			err = dict2insert(x, w, v);
 			DECREF(v);
 			break;
@@ -1093,14 +1052,6 @@
 				err_setstr(SystemError, "no locals");
 				break;
 			}
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			u = dict2lookup(x, w);
-			if (u != NULL && is_accessobject(u)) {
-				err = setaccessvalue(u, x,
-						     (object *)NULL);
-				break;
-			}
-#endif
 			if ((err = dict2remove(x, w)) != 0)
 				err_setval(NameError, w);
 			break;
@@ -1121,12 +1072,6 @@
 				why = WHY_EXCEPTION;
 			}
 			else {
-#ifdef CHECK_STACK
-				if (!CHECK_STACK(oparg)) {
-					x = NULL;
-					break;
-				}
-#endif
 				for (; --oparg >= 0; ) {
 					w = GETTUPLEITEM(v, oparg);
 					INCREF(w);
@@ -1148,12 +1093,6 @@
 				why = WHY_EXCEPTION;
 			}
 			else {
-#ifdef CHECK_STACK
-				if (!CHECK_STACK(oparg)) {
-					x = NULL;
-					break;
-				}
-#endif
 				for (; --oparg >= 0; ) {
 					w = getlistitem(v, oparg);
 					INCREF(w);
@@ -1182,33 +1121,12 @@
 		case STORE_GLOBAL:
 			w = GETNAMEV(oparg);
 			v = POP();
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			if (f->f_locals != NULL) {
-				u = dict2lookup(f->f_locals, w);
-				if (u != NULL && is_accessobject(u)) {
-					err = setaccessvalue(u, f->f_globals,
-							     v);
-					DECREF(v);
-					break;
-				}
-			}
-#endif
 			err = dict2insert(f->f_globals, w, v);
 			DECREF(v);
 			break;
 		
 		case DELETE_GLOBAL:
 			w = GETNAMEV(oparg);
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			if (f->f_locals != NULL) {
-				u = dict2lookup(f->f_locals, w);
-				if (u != NULL && is_accessobject(u)) {
-					err = setaccessvalue(u, f->f_globals,
-							     (object *)NULL);
-					break;
-				}
-			}
-#endif
 			if ((err = dict2remove(f->f_globals, w)) != 0)
 				err_setval(NameError, w);
 			break;
@@ -1238,15 +1156,7 @@
 					}
 				}
 			}
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			if (is_accessobject(x)) {
-				x = getaccessvalue(x, f->f_globals /* XXX */);
-				if (x == NULL)
-					break;
-			}
-			else
-#endif
-				INCREF(x);
+			INCREF(x);
 			PUSH(x);
 			break;
 		
@@ -1261,41 +1171,10 @@
 					break;
 				}
 			}
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			if (is_accessobject(x)) {
-				x = getaccessvalue(x, f->f_globals);
-				if (x == NULL)
-					break;
-			}
-			else
-#endif
-				INCREF(x);
+			INCREF(x);
 			PUSH(x);
 			break;
 
-#if 0
-		case LOAD_LOCAL:
-			w = GETNAMEV(oparg);
-			if ((x = f->f_locals) == NULL) {
-				err_setstr(SystemError, "no locals");
-				break;
-			}
-			x = dict2lookup(x, w);
-			if (x == NULL) {
-				err_setval(NameError, w);
-				break;
-			}
-			if (is_accessobject(x)) {
-				x = getaccessvalue(x, f->f_locals);
-				if (x == NULL)
-					break;
-			}
-			else
-				INCREF(x);
-			PUSH(x);
-			break;
-#endif
-
 		case LOAD_FAST:
 			x = GETLOCAL(oparg);
 			if (x == NULL) {
@@ -1304,47 +1183,17 @@
 							oparg));
 				break;
 			}
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			if (is_accessobject(x)) {
-				x = getaccessvalue(x, f->f_locals);
-				if (x == NULL)
-					break;
-			}
-			else
-#endif
-				INCREF(x);
+			INCREF(x);
 			PUSH(x);
 			if (x != NULL) continue;
 			break;
 
 		case STORE_FAST:
 			v = POP();
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			w = GETLOCAL(oparg);
-			if (w != NULL && is_accessobject(w)) {
-				err = setaccessvalue(w, f->f_locals, v);
-				DECREF(v);
-				break;
-			}
-#endif
 			SETLOCAL(oparg, v);
 			continue;
 
 		case DELETE_FAST:
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			x = GETLOCAL(oparg);
-			if (x == NULL) {
-				err_setval(NameError,
-					   gettupleitem(co->co_varnames,
-							oparg));
-				break;
-			}
-			if (is_accessobject(x)) {
-				err = setaccessvalue(x, f->f_locals,
-						     (object *)NULL);
-				break;
-			}
-#endif
 			SETLOCAL(oparg, NULL);
 			continue;
 		
@@ -1447,18 +1296,6 @@
 			if (err == 0) continue;
 			break;
 
-#ifdef SUPPORT_OBSOLETE_ACCESS
-		case ACCESS_MODE:
-			v = POP();
-			w = GETNAMEV(oparg);
-			if (getstringvalue(w)[0] == '*')
-				defmode = getintvalue(v);
-			else
-				err = access_statement(w, v, f);
-			DECREF(v);
-			break;
-#endif
-		
 		case JUMP_FORWARD:
 			JUMPBY(oparg);
 			continue;
@@ -1689,7 +1526,7 @@
 				w = NULL;
 			v = POP();
 			u = POP();
-			x = build_slice(u,v,w);
+			x = PySlice_New(u, v, w);
 			DECREF(u);
 			DECREF(v);
 			XDECREF(w);
@@ -1867,7 +1704,7 @@
 
 /* Logic for the raise statement (too complicated for inlining).
    This *consumes* a reference count to each of its arguments. */
-static int
+static enum why_code
 do_raise(type, value, tb)
 	object *type, *value, *tb;
 {
@@ -2730,13 +2567,6 @@
 }
 
 static object *
-build_slice(u, v, w) /* u:v:w */
-	object *u, *v, *w;
-{
-  return PySlice_New(u,v,w);
-}
-
-static object *
 apply_slice(u, v, w) /* return u[v:w] */
 	object *u, *v, *w;
 {
@@ -2952,17 +2782,7 @@
 			if (!is_stringobject(name) ||
 			    getstringvalue(name)[0] == '_')
 				continue;
-#ifdef SUPPORT_OBSOLETE_ACCESS
-			if (is_accessobject(value)) {
-				value = getaccessvalue(value, (object *)NULL);
-				if (value == NULL) {
-					err_clear();
-					continue;
-				}
-			}
-			else
-#endif
-				INCREF(value);
+			INCREF(value);
 			err = dict2insert(locals, name, value);
 			DECREF(value);
 			if (err != 0)
@@ -3028,38 +2848,6 @@
 	return newclassobject(bases, methods, name);
 }
 
-#ifdef SUPPORT_OBSOLETE_ACCESS
-static int
-access_statement(name, vmode, f)
-	object *name;
-	object *vmode;
-	frameobject *f;
-{
-	int mode = getintvalue(vmode);
-	object *value, *ac;
-	typeobject *type;
-	int ret;
-	fast_2_locals(f);
-	value = dict2lookup(f->f_locals, name);
-	if (value && is_accessobject(value)) {
-		err_setstr(AccessError, "can't override access");
-		return -1;
-	}
-	err_clear();
-	if (value != NULL && value != None)
-		type = value->ob_type;
-	else
-		type = NULL;
-	ac = newaccessobject(value, f->f_locals, type, mode);
-	if (ac == NULL)
-		return -1;
-	ret = mappinginsert(f->f_locals, name, ac);
-	DECREF(ac);
-	locals_2_fast(f, 0);
-	return ret;
-}
-#endif
-
 static int
 exec_statement(prog, globals, locals)
 	object *prog;
@@ -3128,7 +2916,7 @@
 	return 0;
 }
 
-/* Hack for newimp.py */
+/* Hack for ni.py */
 static object *
 find_from_args(f, nexti)
 	frameobject *f;