diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
commit | 43a42f108af6bcbd91f2672731c3047c26213af1 (patch) | |
tree | 7fa092e5f5d873c72f2486a70e26be26f7a38bec /Source/JavaScriptCore/dfg/DFGArrayMode.h | |
parent | d9cf437c840c6eb7417bdd97e6c40979255d3158 (diff) | |
download | qtwebkit-43a42f108af6bcbd91f2672731c3047c26213af1.tar.gz |
Imported WebKit commit 302e7806bff028bd1167a1ec7c86a1ee00ecfb49 (http://svn.webkit.org/repository/webkit/trunk@132067)
New snapshot that fixes build without QtWidgets
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGArrayMode.h')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGArrayMode.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGArrayMode.h b/Source/JavaScriptCore/dfg/DFGArrayMode.h index a666bb83f..f7ac92733 100644 --- a/Source/JavaScriptCore/dfg/DFGArrayMode.h +++ b/Source/JavaScriptCore/dfg/DFGArrayMode.h @@ -349,6 +349,51 @@ inline bool isEffectful(Array::Mode mode) } } +// This returns the set of array modes that will pass filtering of a CheckArray or +// Arrayify with the given mode. +inline ArrayModes arrayModesFor(Array::Mode arrayMode) +{ + switch (arrayMode) { + case Array::Generic: + return ALL_ARRAY_MODES; + case Array::Contiguous: + case Array::ContiguousToTail: + case Array::ContiguousOutOfBounds: + case Array::ToContiguous: + return asArrayModes(NonArrayWithContiguous); + case Array::PossiblyArrayWithContiguous: + case Array::PossiblyArrayWithContiguousToTail: + case Array::PossiblyArrayWithContiguousOutOfBounds: + return asArrayModes(NonArrayWithContiguous) | asArrayModes(ArrayWithContiguous); + case ARRAY_WITH_CONTIGUOUS_MODES: + return asArrayModes(ArrayWithContiguous); + case Array::ArrayStorage: + case Array::ArrayStorageToHole: + case Array::ArrayStorageOutOfBounds: + case Array::ToArrayStorage: + return asArrayModes(NonArrayWithArrayStorage); + case Array::ToSlowPutArrayStorage: + case Array::SlowPutArrayStorage: + return asArrayModes(NonArrayWithArrayStorage) | asArrayModes(NonArrayWithSlowPutArrayStorage); + case Array::PossiblyArrayWithArrayStorage: + case Array::PossiblyArrayWithArrayStorageToHole: + case Array::PossiblyArrayWithArrayStorageOutOfBounds: + case Array::PossiblyArrayToArrayStorage: + return asArrayModes(NonArrayWithArrayStorage) | asArrayModes(ArrayWithArrayStorage); + case Array::PossiblyArrayWithSlowPutArrayStorage: + return asArrayModes(NonArrayWithArrayStorage) | asArrayModes(ArrayWithArrayStorage) | asArrayModes(NonArrayWithSlowPutArrayStorage) | asArrayModes(ArrayWithSlowPutArrayStorage); + case Array::ArrayWithArrayStorage: + case Array::ArrayWithArrayStorageToHole: + case Array::ArrayWithArrayStorageOutOfBounds: + case Array::ArrayToArrayStorage: + return asArrayModes(ArrayWithArrayStorage); + case Array::ArrayWithSlowPutArrayStorage: + return asArrayModes(ArrayWithArrayStorage) | asArrayModes(ArrayWithSlowPutArrayStorage); + default: + return asArrayModes(NonArray); + } +} + } } // namespace JSC::DFG #endif // ENABLE(DFG_JIT) |