This is an automated email letting you know that sources 
have recently been pushed out.  You can download these newer 
sources directly from 
http://ironpython.codeplex.com/SourceControl/changeset/view/62012.

ADDED SOURCES
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/DynamicConvertExpression.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/Instructions/DivInstruction.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/LazyDynamicExpression.cs
        $/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Ast/Utils.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/GetGlobalContextExpression.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/DynamicGetMemberExpression.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/LoopCompiler.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/PythonConstantExpression.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Runtime/PythonContext.Generated.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/GetParentContextFromFunctionExpression.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/LocalVariables.cs

MODIFIED SOURCES
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/DynamicConvertExpression.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/Instructions/DivInstruction.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/LazyDynamicExpression.cs
        $/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Ast/Utils.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/GetGlobalContextExpression.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/DynamicGetMemberExpression.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/LoopCompiler.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/PythonConstantExpression.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Runtime/PythonContext.Generated.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/GetParentContextFromFunctionExpression.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/LocalVariables.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/BranchLabel.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/Instructions/ControlFlowInstructions.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/Instructions/InstructionList.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/Instructions/TypeOperations.cs
        $/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/AstMethods.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/UncollectableCompilationMode.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/Instructions/Instruction.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/Instructions/LocalAccess.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/Instructions/StackOperations.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Generation/ToDiskRewriter.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Ast/UnaryExpression.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Ast/FinallyFlowControlExpression.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Ast/FlowControlRewriter.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Microsoft.Dynamic.csproj
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Utils/ThreadLocal.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Runtime/ScriptingRuntimeHelpers.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Generation/CompilerHelpers.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/Interpreter.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/LightLambdaClosureVisitor.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/LightLambda.Generated.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/LightCompiler.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/LightLambda.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/InterpretedFrame.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Dynamic/Interpreter/LightDelegateCreator.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Runtime/Types/PythonType.Generated.cs
        
$/IronPython/IronPython_Main/Src/Runtime/Microsoft.Scripting.Debugging/DebuggableLambdaBuilder.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/GeneratorRewriter.cs
        $/IronPython/IronPython_Main/Src/IronPython/Compiler/LazyCode.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/ClosureExpression.cs
        $/IronPython/IronPython_Main/Src/IronPython/Compiler/PythonScriptCode.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/RuntimeScriptCode.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Runtime/Binding/PythonBinaryOperationBinder.cs
        
$/IronPython/IronPython_Main/Src/Scripts/generate_dynamic_instructions.py
        
$/IronPython/IronPython_Main/Src/IronPython/Runtime/Binding/PythonGetMemberBinder.cs
        $/IronPython/IronPython_Main/Src/IronPython/Runtime/FunctionCode.cs
        $/IronPython/IronPython_Main/Src/Tests/test_traceback.py
        
$/IronPython/IronPython_Main/Src/IronPython/Runtime/Operations/PythonOps.cs
        $/IronPython/IronPython_Main/Src/IronPython/Runtime/PythonContext.cs
        $/IronPython/IronPython_Main/Src/Tests/test_memory.py
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/WithStatement.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/WhileStatement.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/UnaryExpression.cs
        $/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/TryStatement.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/ScopeStatement.cs
        $/IronPython/IronPython_Main/Src/Scripts/generate_calls.py
        $/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/PythonAst.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/NameExpression.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/MemberExpression.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/IndexExpression.cs
        $/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/IfStatement.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/FunctionDefinition.cs
        $/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/ForStatement.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/DictionaryExpression.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/ClassDefinition.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/CallExpression.cs
        
$/IronPython/IronPython_Main/Src/IronPython/Compiler/Ast/BinaryExpression.cs
        $/IronPython/IronPython_Main/Src/IronPython/IronPython.csproj

CHECKIN COMMENTS
--------------------------------------------------------------------------------
Changeset Id: 1305533
Date: 12/3/2009 2:04:07 PM

Improves performance of code which is purely interpreted.  Also has some small 
benefits for startup perf.

The interpreter perf improvements mostly come out of not using our optimized 
call sites which perform really badly in the interpreter.  The reason they 
perform so badly is that we spend a lot of time accessing fields which is very 
very slow compared to doing it when compiled.  So instead we have some 
intermediate expressions which lazily create dynamic sites and hold onto them 
directly.  I’ve also added an instruction provider which gets our code context 
which just gets the optimized value.

I’ve also gone ahead and moved hot methods into IInstructionProvider 
implementations.  So now for hot methods like getting our code context from a 
function object this will run faster.

I’ve also implemented some more fast bindings – most of these are for more 
binary operations, but I’ve also added a few for calls which are hot.  

The end result of this is running interpreted (-X:CompilationThreshold 999999) 
our Pystones go from 18080.8 to 54864.4 (200% improvement).  

Big imports (no ngen) goes from 5.44 seconds to 5.16.
Big imports (ngen) goes from 3.11 seconds to 2.69.  Working set goes from to 
64,088k to 60,164k.  This seems to all be a saving in shared pages (private 
working set is effectively unchanged).




(Shelveset: InterpreterPerfAndStartup3;REDMOND\dinov | SNAP CheckinId: 9966)

_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to