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
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com