Message1567
Logged In: YES
user_id=80475
Attaching my minimal version of the patch. It runs the
attached demo without exception and does not measurably show
on any of my timings.
The approach is to restrict the generalization to eval()
instead of exec(). Since eval() can't set values in the
locals dict, no changes are needed to the setitem and
delitem calls. Instead of using PyObject_GetItem()
directly, I do a regular lookup and fallback to the
generalizaiton if necessary -- this is why the normal case
doesn't get slowed down (the cost is a PyDict_Check which
uses values already in cache, and a branch predicatable
comparison)..
While the demo script runs, and the test_suite passes, it is
slightly too simple and doesn't yet handle eval('dir()',
globals(), M()) where M is a non-dict mapping. |
|
Date |
User |
Action |
Args |
2007-08-23 13:50:45 | admin | link | issue215126 messages |
2007-08-23 13:50:45 | admin | create | |
|