- DEBUG("completed thread %d\n", thread_current()->get_id());
- state = THREAD_COMPLETED;
- stack_free(stack);
+ if (state != THREAD_COMPLETED) {
+ DEBUG("completed thread %d\n", get_id());
+ state = THREAD_COMPLETED;
+ if (stack)
+ stack_free(stack);
+ }
+}
+
+void * Thread::operator new(size_t size) {
+ return userMalloc(size);
+}
+
+void Thread::operator delete(void *ptr) {
+ userFree(ptr);