# HG changeset patch # User ikkun # Date 1474887264 -32400 # Node ID 32773f506410087e38ab184ffd8058e96e79ccc7 # Parent a574ba0da60f556c66c8f76ef254b20d76e04073 remove code stack, add continuation of rotateL/totateR diff -r a574ba0da60f -r 32773f506410 src/parallel_execution/rb_tree.c --- a/src/parallel_execution/rb_tree.c Wed Sep 14 20:43:37 2016 +0900 +++ b/src/parallel_execution/rb_tree.c Mon Sep 26 19:54:24 2016 +0900 @@ -170,14 +170,10 @@ traverse->current = parent; if ((current == parent->right) && (parent == grandparent->left)) { - context->next = InsertCase4_1; - - stack_push(context->code_stack, &context->next); + traverse->next = InsertCase4_1; goto meta(context, RotateL); } else if ((current == parent->left) && (parent == grandparent->right)) { - context->next = InsertCase4_2; - - stack_push(context->code_stack, &context->next); + traverse->next = InsertCase4_2; goto meta(context, RotateR); } @@ -221,7 +217,7 @@ grandparent->color = Red; traverse->current = grandparent; - + traverse->next = context->next; if ((current == parent->left) && (parent == grandparent->left)) goto meta(context, RotateR); else @@ -255,8 +251,7 @@ tmp->left = node; traverse->current = tmp; - stack_pop(context->code_stack, &context->next); - goto meta(context, context->next); + goto meta(context, traverse->next); } __code rotateLeft_stub(struct Context* context) { @@ -287,8 +282,7 @@ tmp->right = node; traverse->current = tmp; - stack_pop(context->code_stack, &context->next); - goto meta(context, context->next); + goto meta(context, traverse->next); } __code rotateRight_stub(struct Context* context) {