summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h')
-rw-r--r--Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h23
1 files changed, 17 insertions, 6 deletions
diff --git a/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h b/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h
index b22198a00..d34392121 100644
--- a/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h
+++ b/Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013, 2015 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
@@ -35,22 +35,33 @@ class BytecodeLivenessAnalysis;
typedef HashMap<unsigned, FastBitVector, WTF::IntHash<unsigned>, WTF::UnsignedWithZeroKeyHashTraits<unsigned>> BytecodeToBitmapMap;
class FullBytecodeLiveness {
- WTF_MAKE_FAST_ALLOCATED;
public:
- const FastBitVector& getLiveness(unsigned bytecodeIndex) const
+ FullBytecodeLiveness() : m_codeBlock(0) { }
+
+ // We say "out" to refer to the bitvector that contains raw results for a bytecode
+ // instruction.
+ const FastBitVector& getOut(unsigned bytecodeIndex) const
{
- return m_map[bytecodeIndex];
+ BytecodeToBitmapMap::const_iterator iter = m_map.find(bytecodeIndex);
+ ASSERT(iter != m_map.end());
+ return iter->value;
}
bool operandIsLive(int operand, unsigned bytecodeIndex) const
{
- return operandIsAlwaysLive(operand) || operandThatIsNotAlwaysLiveIsLive(getLiveness(bytecodeIndex), operand);
+ return operandIsAlwaysLive(m_codeBlock, operand) || operandThatIsNotAlwaysLiveIsLive(m_codeBlock, getOut(bytecodeIndex), operand);
+ }
+
+ FastBitVector getLiveness(unsigned bytecodeIndex) const
+ {
+ return getLivenessInfo(m_codeBlock, getOut(bytecodeIndex));
}
private:
friend class BytecodeLivenessAnalysis;
- Vector<FastBitVector, 0, UnsafeVectorOverflow> m_map;
+ CodeBlock* m_codeBlock;
+ BytecodeToBitmapMap m_map;
};
} // namespace JSC