A quick test to check if merging immediate mode draw method calls on the fly and batch executing them at the end of each draw loop (to reduce the number of fill / beginPath / endPath calls to a minimum ) does yield to performance benefits.
Unfortunately processing the stack is really slow.