From 32761a6cee1d0dee366b885b7b9c777e67885688 Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Sun, 10 Apr 2016 09:28:39 +0000 Subject: webkitgtk-2.4.11 --- .../JavaScriptCore/bytecode/FullBytecodeLiveness.h | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'Source/JavaScriptCore/bytecode/FullBytecodeLiveness.h') 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, WTF::UnsignedWithZeroKeyHashTraits> 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 m_map; + CodeBlock* m_codeBlock; + BytecodeToBitmapMap m_map; }; } // namespace JSC -- cgit v1.2.1