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