Skip to content

Latest commit

 

History

History
10 lines (10 loc) · 759 Bytes

weave-membrane-miss-deep-eval.md

File metadata and controls

10 lines (10 loc) · 759 Bytes

Sometimes dynamically evaluated code must also be instrumented. Either because such code is of interest for the analysis or because the global-declarative-record option is set to "emulate" (this option requires all code to be instrumented). This requires the user to control the access to dynamic code evaluation means by the target program. To that end the user can weave the apply@around and construct@around join points. A technique that I name weave membrane. This is less intrusive than the patch membrane but it requires additional work to intercept dynamic code evaluation in external code area. For instance, Reflect.apply(eval, undefined, "123;") triggers a global eval call inside that implementation of the Reflect.apply intrinsic.