summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp')
-rw-r--r--Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp29
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);