diff --git a/py/obj.h b/py/obj.h
index 10cb48961ffab83be64464d2473131622dd83e7a..2e715253c53f46dc374e4911f3eb66d685ea83e1 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -624,7 +624,6 @@ extern const struct _mp_obj_str_t mp_const_empty_bytes_obj;
 extern const struct _mp_obj_tuple_t mp_const_empty_tuple_obj;
 extern const struct _mp_obj_singleton_t mp_const_ellipsis_obj;
 extern const struct _mp_obj_singleton_t mp_const_notimplemented_obj;
-extern const struct _mp_obj_exception_t mp_const_MemoryError_obj;
 extern const struct _mp_obj_exception_t mp_const_GeneratorExit_obj;
 
 // General API for objects
diff --git a/py/objexcept.c b/py/objexcept.c
index 524f105ce1a6ebe888e5a138b8a61085c29e7cfe..ccb0bad0dd93cd20cb7bc4e49ec4ee681b20e66f 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -43,9 +43,6 @@
 // Number of traceback entries to reserve in the emergency exception buffer
 #define EMG_TRACEBACK_ALLOC (2 * TRACEBACK_ENTRY_LEN)
 
-// Instance of MemoryError exception - needed by mp_malloc_fail
-const mp_obj_exception_t mp_const_MemoryError_obj = {{&mp_type_MemoryError}, 0, 0, NULL, (mp_obj_tuple_t*)&mp_const_empty_tuple_obj};
-
 // Optionally allocated buffer for storing the first argument of an exception
 // allocated when the heap is locked.
 #if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF
diff --git a/py/vm.c b/py/vm.c
index c629a61e2f686d1dc4ca800d606c04bdb5836930..ceb2060f9d6c5ff4b3d5d7a77dd5d0bb0199118f 100644
--- a/py/vm.c
+++ b/py/vm.c
@@ -1374,8 +1374,7 @@ unwind_loop:
             // set file and line number that the exception occurred at
             // TODO: don't set traceback for exceptions re-raised by END_FINALLY.
             // But consider how to handle nested exceptions.
-            // TODO need a better way of not adding traceback to constant objects (right now, just GeneratorExit_obj and MemoryError_obj)
-            if (nlr.ret_val != &mp_const_GeneratorExit_obj && nlr.ret_val != &mp_const_MemoryError_obj) {
+            if (nlr.ret_val != &mp_const_GeneratorExit_obj) {
                 const byte *ip = code_state->fun_bc->bytecode;
                 ip = mp_decode_uint_skip(ip); // skip n_state
                 ip = mp_decode_uint_skip(ip); // skip n_exc_stack