summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/ByValInfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/bytecode/ByValInfo.h')
-rw-r--r--Source/JavaScriptCore/bytecode/ByValInfo.h78
1 files changed, 9 insertions, 69 deletions
diff --git a/Source/JavaScriptCore/bytecode/ByValInfo.h b/Source/JavaScriptCore/bytecode/ByValInfo.h
index b46a40d07..35fae0c60 100644
--- a/Source/JavaScriptCore/bytecode/ByValInfo.h
+++ b/Source/JavaScriptCore/bytecode/ByValInfo.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012, 2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2012 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,25 +26,23 @@
#ifndef ByValInfo_h
#define ByValInfo_h
+#include <wtf/Platform.h>
+
+#if ENABLE(JIT)
+
#include "ClassInfo.h"
#include "CodeLocation.h"
-#include "CodeOrigin.h"
#include "IndexingType.h"
#include "JITStubRoutine.h"
#include "Structure.h"
-#include "StructureStubInfo.h"
namespace JSC {
-#if ENABLE(JIT)
-
enum JITArrayMode {
JITInt32,
JITDouble,
JITContiguous,
JITArrayStorage,
- JITDirectArguments,
- JITScopedArguments,
JITInt8Array,
JITInt16Array,
JITInt32Array,
@@ -69,17 +67,6 @@ inline bool isOptimizableIndexingType(IndexingType indexingType)
}
}
-inline bool hasOptimizableIndexingForJSType(JSType type)
-{
- switch (type) {
- case DirectArgumentsType:
- case ScopedArgumentsType:
- return true;
- default:
- return false;
- }
-}
-
inline bool hasOptimizableIndexingForClassInfo(const ClassInfo* classInfo)
{
return isTypedView(classInfo->typedArrayStorageType);
@@ -88,7 +75,6 @@ inline bool hasOptimizableIndexingForClassInfo(const ClassInfo* classInfo)
inline bool hasOptimizableIndexing(Structure* structure)
{
return isOptimizableIndexingType(structure->indexingType())
- || hasOptimizableIndexingForJSType(structure->typeInfo().type())
|| hasOptimizableIndexingForClassInfo(structure->classInfo());
}
@@ -109,19 +95,6 @@ inline JITArrayMode jitArrayModeForIndexingType(IndexingType indexingType)
}
}
-inline JITArrayMode jitArrayModeForJSType(JSType type)
-{
- switch (type) {
- case DirectArgumentsType:
- return JITDirectArguments;
- case ScopedArgumentsType:
- return JITScopedArguments;
- default:
- RELEASE_ASSERT_NOT_REACHED();
- return JITContiguous;
- }
-}
-
inline JITArrayMode jitArrayModeForClassInfo(const ClassInfo* classInfo)
{
switch (classInfo->typedArrayStorageType) {
@@ -149,19 +122,6 @@ inline JITArrayMode jitArrayModeForClassInfo(const ClassInfo* classInfo)
}
}
-inline bool jitArrayModePermitsPut(JITArrayMode mode)
-{
- switch (mode) {
- case JITDirectArguments:
- case JITScopedArguments:
- // We could support put_by_val on these at some point, but it's just not that profitable
- // at the moment.
- return false;
- default:
- return true;
- }
-}
-
inline TypedArrayType typedArrayTypeForJITArrayMode(JITArrayMode mode)
{
switch (mode) {
@@ -194,44 +154,30 @@ inline JITArrayMode jitArrayModeForStructure(Structure* structure)
if (isOptimizableIndexingType(structure->indexingType()))
return jitArrayModeForIndexingType(structure->indexingType());
- if (hasOptimizableIndexingForJSType(structure->typeInfo().type()))
- return jitArrayModeForJSType(structure->typeInfo().type());
-
ASSERT(hasOptimizableIndexingForClassInfo(structure->classInfo()));
return jitArrayModeForClassInfo(structure->classInfo());
}
struct ByValInfo {
ByValInfo() { }
-
- ByValInfo(unsigned bytecodeIndex, CodeLocationJump notIndexJump, CodeLocationJump badTypeJump, JITArrayMode arrayMode, ArrayProfile* arrayProfile, int16_t badTypeJumpToDone, int16_t badTypeJumpToNextHotPath, int16_t returnAddressToSlowPath)
+
+ ByValInfo(unsigned bytecodeIndex, CodeLocationJump badTypeJump, JITArrayMode arrayMode, int16_t badTypeJumpToDone, int16_t returnAddressToSlowPath)
: bytecodeIndex(bytecodeIndex)
- , notIndexJump(notIndexJump)
, badTypeJump(badTypeJump)
, arrayMode(arrayMode)
- , arrayProfile(arrayProfile)
, badTypeJumpToDone(badTypeJumpToDone)
- , badTypeJumpToNextHotPath(badTypeJumpToNextHotPath)
, returnAddressToSlowPath(returnAddressToSlowPath)
, slowPathCount(0)
- , stubInfo(nullptr)
- , tookSlowPath(false)
{
}
-
+
unsigned bytecodeIndex;
- CodeLocationJump notIndexJump;
CodeLocationJump badTypeJump;
JITArrayMode arrayMode; // The array mode that was baked into the inline JIT code.
- ArrayProfile* arrayProfile;
int16_t badTypeJumpToDone;
- int16_t badTypeJumpToNextHotPath;
int16_t returnAddressToSlowPath;
unsigned slowPathCount;
RefPtr<JITStubRoutine> stubRoutine;
- Identifier cachedId;
- StructureStubInfo* stubInfo;
- bool tookSlowPath;
};
inline unsigned getByValInfoBytecodeIndex(ByValInfo* info)
@@ -239,15 +185,9 @@ inline unsigned getByValInfoBytecodeIndex(ByValInfo* info)
return info->bytecodeIndex;
}
-typedef HashMap<CodeOrigin, ByValInfo*, CodeOriginApproximateHash> ByValInfoMap;
-
-#else // ENABLE(JIT)
-
-typedef HashMap<int, void*> ByValInfoMap;
+} // namespace JSC
#endif // ENABLE(JIT)
-} // namespace JSC
-
#endif // ByValInfo_h