From 9d3bbb41dd536a96197280441fe9f8f85a7c3df7 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sat, 22 Feb 2014 19:45:04 +0000 Subject: [PATCH] Moving downward splay updates to after side tree linkage, allowing the optimiser to do a better job. produces about 10% speedup: xc/release/djbench -x 1234 --sshift 8 mvff Copied from Perforce Change: 184445 ServerID: perforce.ravenbrook.com --- mps/code/splay.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mps/code/splay.c b/mps/code/splay.c index 22b0b92e596..ba9d81cdeac 100644 --- a/mps/code/splay.c +++ b/mps/code/splay.c @@ -295,8 +295,8 @@ static Compare SplaySplit(Tree *nodeReturn, goto assemble; } TreeRotateRight(&node); - tree->updateNode(tree, TreeRight(node)); SplayLinkRight(&node, &rightFirst); + tree->updateNode(tree, TreeRight(rightFirst)); break; case CompareGREATER: /* zig-zag */ @@ -329,8 +329,8 @@ static Compare SplaySplit(Tree *nodeReturn, goto assemble; } TreeRotateLeft(&node); - tree->updateNode(tree, TreeLeft(node)); SplayLinkLeft(&node, &leftLast); + tree->updateNode(tree, TreeLeft(leftLast)); break; case CompareLESS: /* zag-zig */ @@ -627,7 +627,6 @@ static Tree SplayTreeSuccessor(SplayTree tree) { * . */ - Bool SplayTreeNeighbours(Tree *leftReturn, Tree *rightReturn, SplayTree tree, TreeKey key) {