Well thats sounds similiar about how we did simple patches in our inhouse fork SeExpr here at Wizart Animation.
Our reasoning for that, we were pretty freaked out by idea to hold SeExpression instance for each processed primitive.
So what we did:
1) Windows support patches => proper codegen with bison and flex.
2) tbb parallel for evaluate without copying=> we just extended api SeExprNodes that allow app writer to pass void* pointer on evaluate. That way we can resolve external variables on each eval from separate threads.
3) Local vars problem=> same way we pass internally SeExprLocalThreadContext struct on each eval, and resolve and write to local vars using these data.
So this way we can parse SeExpression once, and evaluate one instance from several threads.
Not sure if our patches are good enough for pull request, or required if big refactor are on roadmap, just to let you know about other ways.
P.S.
JIT is must have feature, intepreter can be still very slow even with simple expressions.
Alexander
понедельник, 19 октября 2015 г., 16:41:22 UTC+3 пользователь Colin Doncaster написал: