Checkpoint work on preliminary automated smoke tests based on Selenium + Sauce Labs OnDemand
Disable smoke tests
Checkpoint support for caching type expressions in variables local to each type's definition
Don't cache typeof expressions since cached types are public interfaces.
Don't synchronously decode audio in Chrome. The Web Audio API is a goddamn mess.
Provide a stub for the Dictionary enumerator type so references to it work in tests
Don't cache JSTypeReference nodes
When generating code for a nested type, do not cache references to its enclosing types
Fix the function generated for field default values to use a unique name for its argument ($pi) instead of redefining $.
Cache types inside a special class instead of in variables, so that they can be lazily evaluated. Fixes various cycle issues.
Still don't cache references to your own type (since $.publicInterface is just fine)
Basic mannux smoke test works.
Fix nulls in JSIL.ObjectEquals.
Declare a '$thisType' local inside of each type's initializer that maps to the type's public interface, and use it instead of fully-qualified references to the type. Makes generated code more compact and makes tests easier to write.
Make each cached type a variable local to the closure that is initialized before static constructors run (addresses cycle issues while preserving cached-type-specific type information for JITs)
Disable type expression caching specifically for formatting and metadata tests because it makes it harder to write them and I am lazy and a terrible person.
Fix some straggling metadata tests that were broken by the $thisType codegen improvement.
I think ReplaceNonExternalClass has been totally busted for a while. Whoops.
Fix crash due to type expression caching processing methods it shouldn't.
Handle casts, as and is in the type expression cacher.
Disable the type expression cacher for now because it forms reference cycles.
Replace use of Function.bind and Object.create in MemberwiseClone implementations with a custom constructor function.
Fix a bug in MemberwiseCloner generation.
Implement GraphicsDevice.GetRenderTargets.
More precise transform semantics for SpriteBatch.
Improve performance of overloaded method dispatch by removing the use of Function.apply.
Implement Graphics.Viewport.get_Bounds.
Track total memory being used by 2D render targets.
Use 'new Function' instead of eval to construct named functions, so that they show up in Chrome's web inspector again.
Add an optimizer setting that causes property accesses to be converted back to method calls when possible, since property accesses are slow in V8 and SpiderMonkey.
Add an attribute that allows you to force accesses to a property to always remain as property accesses instead of being converted to method calls.
Handle base property invocations correctly when converting property accesses to invocations.
Fix property access -> invocation conversion generating static invocations for property accesses that were virtual.
Detect in-place mutation of properties more accurately so that post/pre-increments of properties still work.
Properly implement externals for each XNA Color constant's get_ method.
Stub out Assembly.get_Location in addition to Location.
Handle static properties correctly in access -> invocation transform.