diff options
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp b/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp index 252d638ee..4c93975c5 100644 --- a/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp +++ b/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Apple Inc. All rights reserved. + * Copyright (C) 2013, 2014 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -28,6 +28,8 @@ #if ENABLE(DFG_JIT) +#include "JSCInlines.h" + namespace JSC { namespace DFG { BlockInsertionSet::BlockInsertionSet(Graph& graph) @@ -42,25 +44,27 @@ void BlockInsertionSet::insert(const BlockInsertion& insertion) m_insertions.append(insertion); } -void BlockInsertionSet::insert(size_t index, PassRefPtr<BasicBlock> block) +void BlockInsertionSet::insert(size_t index, Ref<BasicBlock>&& block) { - insert(BlockInsertion(index, block)); + insert(BlockInsertion(index, WTFMove(block))); } -BasicBlock* BlockInsertionSet::insert(size_t index) +BasicBlock* BlockInsertionSet::insert(size_t index, float executionCount) { - RefPtr<BasicBlock> block = adoptRef(new BasicBlock( + Ref<BasicBlock> block = adoptRef(*new BasicBlock( UINT_MAX, m_graph.block(0)->variablesAtHead.numberOfArguments(), - m_graph.block(0)->variablesAtHead.numberOfLocals())); + m_graph.block(0)->variablesAtHead.numberOfLocals(), + executionCount)); block->isReachable = true; - insert(index, block); - return block.get(); + auto* result = block.ptr(); + insert(index, WTFMove(block)); + return result; } -BasicBlock* BlockInsertionSet::insertBefore(BasicBlock* before) +BasicBlock* BlockInsertionSet::insertBefore(BasicBlock* before, float executionCount) { - return insert(before->index); + return insert(before->index, executionCount); } bool BlockInsertionSet::execute() @@ -68,8 +72,9 @@ bool BlockInsertionSet::execute() if (m_insertions.isEmpty()) return false; - // We allow insertions to be given to us in any order. So, we need to - // sort them before running WTF::executeInsertions. + // We allow insertions to be given to us in any order. So, we need to sort them before + // running WTF::executeInsertions. Also, we don't really care if the sort is stable since + // basic block order doesn't have semantics - it's just to make code easier to read. std::sort(m_insertions.begin(), m_insertions.end()); executeInsertions(m_graph.m_blocks, m_insertions); |