summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/ArrayProfile.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/bytecode/ArrayProfile.h')
-rw-r--r--Source/JavaScriptCore/bytecode/ArrayProfile.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/Source/JavaScriptCore/bytecode/ArrayProfile.h b/Source/JavaScriptCore/bytecode/ArrayProfile.h
index 5a656e2dd..312473f3c 100644
--- a/Source/JavaScriptCore/bytecode/ArrayProfile.h
+++ b/Source/JavaScriptCore/bytecode/ArrayProfile.h
@@ -35,16 +35,16 @@ namespace JSC {
class LLIntOffsetsExtractor;
+// This is a bitfield where each bit represents an IndexingType that we have seen.
+// There are 17 indexing types (0 to 16, inclusive), so 32 bits is more than enough.
typedef unsigned ArrayModes;
-static const unsigned IsNotArray = 1;
-static const unsigned IsJSArray = 2;
+#define asArrayModes(type) \
+ (1 << static_cast<unsigned>(type))
inline ArrayModes arrayModeFromStructure(Structure* structure)
{
- if (structure->classInfo() == &JSArray::s_info)
- return IsJSArray;
- return IsNotArray;
+ return asArrayModes(structure->indexingTypeIncludingHistory());
}
class ArrayProfile {