diff options
Diffstat (limited to 'Source/JavaScriptCore/bytecode/ByValInfo.h')
| -rw-r--r-- | Source/JavaScriptCore/bytecode/ByValInfo.h | 78 |
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 |
