playscript/playscript-mono — pull request #217 by iaddis (2013-08-02 23:44:43+00:00)
Title: Performance improvements for the PS dynamic runtime

Changed from using delegate based invocation to using static-ly invoked methods.
All optimizations should be enabled/disabled using compiler options:

// if true, then static calls to PSBinaryOperation.Addition(a,b) are used instead of binder
public bool NewDynamicRuntime_BinaryOps = false;
// if true, dynamics are cast to boolean before performing logical operations
public bool NewDynamicRuntime_LogicalOps = false;
// if true, hasOwnProperty is statically called on dynamics
public bool NewDynamicRuntime_HasOwnProperty = false;
// if true, conversions use static calls to PSConverter.ConvertToXYZ
public bool NewDynamicRuntime_Convert = false;
// if true, conversions will be removed around dynamic statements
public bool NewDynamicRuntime_ConvertReturnType = false;
// if true, new get/set index call sites will be used
public bool NewDynamicRuntime_GetSetIndex = false;
// if true, new get/set member call sites will be used
public bool NewDynamicRuntime_GetSetMember = false;
// if true, both the true and false components of a ?: will be cast to dynamic if either is dynamic
public bool NewDynamicRuntime_Conditional = false;
// if true, event add/remove binders will be disabled
public bool NewDynamicRuntime_EventAddRemove = false;