• rmcilroy's avatar
    [Interpreter] Replace BytecodeRegisterAllocator with a simple bump pointer. · 27fe988b
    rmcilroy authored
    There are only a few occasions where we allocate a register in an outer
    expression allocation scope, which makes the costly free-list approach
    of the BytecodeRegisterAllocator unecessary. This CL replaces all
    occurrences with moves to the accumulator and stores to a register
    allocated in the correct scope. By doing this, we can simplify the
    BytecodeRegisterAllocator to be a simple bump-pointer allocator
    with registers released in the same order as allocated.
    
    The following changes are also made:
     - Make BytecodeRegisterOptimizer able to use registers which have been
       unallocated, but not yet reused
     - Remove RegisterExpressionResultScope and rename
       AccumulatorExpressionResultScope to ValueExpressionResultScope
     - Introduce RegisterList to represent consecutive register
       allocations, and use this for operands to call bytecodes.
    
    By avoiding the free-list handling, this gives another couple of
    percent on CodeLoad.
    
    BUG=v8:4280
    
    Review-Url: https://codereview.chromium.org/2369873002
    Cr-Commit-Position: refs/heads/master@{#39905}
    27fe988b
Name
Last commit
Last update
..
ArrayLiterals.golden Loading commit data...
ArrayLiteralsWide.golden Loading commit data...
AssignmentsInBinaryExpression.golden Loading commit data...
BasicBlockToBoolean.golden Loading commit data...
BasicLoops.golden Loading commit data...
BreakableBlocks.golden Loading commit data...
CallGlobal.golden Loading commit data...
CallLookupSlot.golden Loading commit data...
CallNew.golden Loading commit data...
CallRuntime.golden Loading commit data...
ClassAndSuperClass.golden Loading commit data...
ClassDeclarations.golden Loading commit data...
CompoundExpressions.golden Loading commit data...
Conditional.golden Loading commit data...
ConstVariable.golden Loading commit data...
ConstVariableContextSlot.golden Loading commit data...
ContextParameters.golden Loading commit data...
ContextVariables.golden Loading commit data...
CountOperators.golden Loading commit data...
CreateArguments.golden Loading commit data...
CreateRestParameter.golden Loading commit data...
DeadCodeRemoval.golden Loading commit data...
DeclareGlobals.golden Loading commit data...
Delete.golden Loading commit data...
DeleteLookupSlotInEval.golden Loading commit data...
DoDebugger.golden Loading commit data...
DoExpression.golden Loading commit data...
Eval.golden Loading commit data...
ForIn.golden Loading commit data...
ForOf.golden Loading commit data...
FunctionLiterals.golden Loading commit data...
Generators.golden Loading commit data...
GlobalCompoundExpressions.golden Loading commit data...
GlobalCountOperators.golden Loading commit data...
GlobalDelete.golden Loading commit data...
HeapNumberConstants.golden Loading commit data...
IfConditions.golden Loading commit data...
IntegerConstants.golden Loading commit data...
JumpsRequiringConstantWideOperands.golden Loading commit data...
LetVariable.golden Loading commit data...
LetVariableContextSlot.golden Loading commit data...
LoadGlobal.golden Loading commit data...
LogicalExpressions.golden Loading commit data...
LookupSlot.golden Loading commit data...
LookupSlotInEval.golden Loading commit data...
LookupSlotWideInEval.golden Loading commit data...
NewTarget.golden Loading commit data...
ObjectLiterals.golden Loading commit data...
ObjectLiteralsWide.golden Loading commit data...
OuterContextVariables.golden Loading commit data...
Parameters.golden Loading commit data...
PrimitiveExpressions.golden Loading commit data...
PrimitiveReturnStatements.golden Loading commit data...
PropertyCall.golden Loading commit data...
PropertyLoads.golden Loading commit data...
PropertyStores.golden Loading commit data...
RegExpLiterals.golden Loading commit data...
RegExpLiteralsWide.golden Loading commit data...
RemoveRedundantLdar.golden Loading commit data...
StoreGlobal.golden Loading commit data...
StringConstants.golden Loading commit data...
Switch.golden Loading commit data...
ThisFunction.golden Loading commit data...
Throw.golden Loading commit data...
TopLevelObjectLiterals.golden Loading commit data...
TryCatch.golden Loading commit data...
TryFinally.golden Loading commit data...
Typeof.golden Loading commit data...
UnaryOperators.golden Loading commit data...
WideRegisters.golden Loading commit data...
WithStatement.golden Loading commit data...