Optimizing Parallel Recursive Datalog Evaluation on Multicore Machines