FYI Code Review: interpreted sites

tfpt review “/shelveset:InterpretedSites7-PartI;REDMOND\tomat”

The first part of DLR interpreter improvements that has already been
reviewed. The rest of the changes are awaiting DLR design review.

Ruby changes:

Removes usage of return statement from generated MetaObject

Replaces Debug.WriteLine with Utils.Log - unfortunately,
Debug.WriteLine(string message, string category) ignores the category so
it’s not possible to filter the messages by the category in trace
listener. The other overload Debug.WriteLine(object message, string
category) passes the category to the filter correctly :-/. So we use the

Adds command line options: -ET*, -DT*, -ET , -DT
that enable all, disable all, enable specified, disable specified
Utils.Log messages, respectively.

Adds more time measurements.

DLR changes:

Various minor improvements in interpreter.

Debug only DLR options are no longer available in release mode. It was
confusing that they were accepted but didn’t work.

Uses Snippets for generating dynamic methods in
Interpreter.MatchCaller. This enables us to look at the generated code
in the Snippets assembly (and more importantly, to see how much IL is

Changes EmptyStatement and ConstantExpression.True, False, Null, Zero
factories to return singleton instances.