diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/dfg/DFGInvalidationPointInjectionPhase.cpp | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz |
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGInvalidationPointInjectionPhase.cpp')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGInvalidationPointInjectionPhase.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGInvalidationPointInjectionPhase.cpp b/Source/JavaScriptCore/dfg/DFGInvalidationPointInjectionPhase.cpp index 9228001cc..d71a7cbda 100644 --- a/Source/JavaScriptCore/dfg/DFGInvalidationPointInjectionPhase.cpp +++ b/Source/JavaScriptCore/dfg/DFGInvalidationPointInjectionPhase.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013, 2014 Apple Inc. All rights reserved. + * Copyright (C) 2013 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,12 +28,11 @@ #if ENABLE(DFG_JIT) -#include "DFGBlockSetInlines.h" #include "DFGClobberize.h" #include "DFGGraph.h" #include "DFGInsertionSet.h" #include "DFGPhase.h" -#include "JSCInlines.h" +#include "Operations.h" namespace JSC { namespace DFG { @@ -51,7 +50,7 @@ public: { ASSERT(m_graph.m_form != SSA); - BlockSet blocksThatNeedInvalidationPoints; + BitVector blocksThatNeedInvalidationPoints; for (BlockIndex blockIndex = m_graph.numBlocks(); blockIndex--;) { BasicBlock* block = m_graph.block(blockIndex); @@ -64,13 +63,17 @@ public: // Note: this assumes that control flow occurs at bytecode instruction boundaries. if (m_originThatHadFire.isSet()) { for (unsigned i = block->numSuccessors(); i--;) - blocksThatNeedInvalidationPoints.add(block->successor(i)); + blocksThatNeedInvalidationPoints.set(block->successor(i)->index); } m_insertionSet.execute(block); } - - for (BasicBlock* block : blocksThatNeedInvalidationPoints.iterable(m_graph)) { + + for (BlockIndex blockIndex = m_graph.numBlocks(); blockIndex--;) { + if (!blocksThatNeedInvalidationPoints.get(blockIndex)) + continue; + + BasicBlock* block = m_graph.block(blockIndex); insertInvalidationCheck(0, block->at(0)); m_insertionSet.execute(block); } @@ -81,18 +84,18 @@ public: private: void handle(unsigned nodeIndex, Node* node) { - if (m_originThatHadFire.isSet() && m_originThatHadFire != node->origin.forExit) { + if (m_originThatHadFire.isSet() && m_originThatHadFire != node->codeOrigin) { insertInvalidationCheck(nodeIndex, node); m_originThatHadFire = CodeOrigin(); } if (writesOverlap(m_graph, node, Watchpoint_fire)) - m_originThatHadFire = node->origin.forExit; + m_originThatHadFire = node->codeOrigin; } void insertInvalidationCheck(unsigned nodeIndex, Node* node) { - m_insertionSet.insertNode(nodeIndex, SpecNone, InvalidationPoint, node->origin); + m_insertionSet.insertNode(nodeIndex, SpecNone, InvalidationPoint, node->codeOrigin); } CodeOrigin m_originThatHadFire; |