Commit 2184793e authored by fpizlo@apple.com's avatar fpizlo@apple.com

Unreviewed, adding forgotten files.

* bytecode/ByValInfo.h: Added.
(JSC):
(JSC::isOptimizableIndexingType):
(JSC::jitArrayModeForIndexingType):
(JSC::ByValInfo::ByValInfo):
(ByValInfo):
(JSC::getByValInfoBytecodeIndex):
* runtime/IndexingType.cpp: Added.
(JSC):
(JSC::indexingTypeToString):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@130828 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 010e359e
2012-10-09 Filip Pizlo <fpizlo@apple.com>
Unreviewed, adding forgotten files.
* bytecode/ByValInfo.h: Added.
(JSC):
(JSC::isOptimizableIndexingType):
(JSC::jitArrayModeForIndexingType):
(JSC::ByValInfo::ByValInfo):
(ByValInfo):
(JSC::getByValInfoBytecodeIndex):
* runtime/IndexingType.cpp: Added.
(JSC):
(JSC::indexingTypeToString):
2012-10-08 Filip Pizlo <fpizlo@apple.com>
JSC should infer when indexed storage is contiguous, and optimize for it
......
/*
* 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
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef ByValInfo_h
#define ByValInfo_h
#include <wtf/Platform.h>
#if ENABLE(JIT)
#include "CodeLocation.h"
#include "IndexingType.h"
#include "JITStubRoutine.h"
namespace JSC {
enum JITArrayMode { JITContiguous, JITArrayStorage };
inline bool isOptimizableIndexingType(IndexingType indexingType)
{
switch (indexingType) {
case ALL_CONTIGUOUS_INDEXING_TYPES:
case ARRAY_WITH_ARRAY_STORAGE_INDEXING_TYPES:
return true;
default:
return false;
}
}
inline JITArrayMode jitArrayModeForIndexingType(IndexingType indexingType)
{
switch (indexingType) {
case ALL_CONTIGUOUS_INDEXING_TYPES:
return JITContiguous;
case ARRAY_WITH_ARRAY_STORAGE_INDEXING_TYPES:
return JITArrayStorage;
default:
CRASH();
return JITContiguous;
}
}
struct ByValInfo {
ByValInfo() { }
ByValInfo(unsigned bytecodeIndex, CodeLocationJump badTypeJump, JITArrayMode arrayMode, int16_t badTypeJumpToDone, int16_t returnAddressToSlowPath)
: bytecodeIndex(bytecodeIndex)
, badTypeJump(badTypeJump)
, arrayMode(arrayMode)
, badTypeJumpToDone(badTypeJumpToDone)
, returnAddressToSlowPath(returnAddressToSlowPath)
{
}
unsigned bytecodeIndex;
CodeLocationJump badTypeJump;
JITArrayMode arrayMode; // The array mode that was baked into the inline JIT code.
int16_t badTypeJumpToDone;
int16_t returnAddressToSlowPath;
RefPtr<JITStubRoutine> stubRoutine;
};
inline unsigned getByValInfoBytecodeIndex(ByValInfo* info)
{
return info->bytecodeIndex;
}
} // namespace JSC
#endif // ENABLE(JIT)
#endif // ByValInfo_h
/*
* 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
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "config.h"
#include "IndexingType.h"
#include <stdio.h>
#include <wtf/StringExtras.h>
namespace JSC {
const char* indexingTypeToString(IndexingType indexingType)
{
static char result[128];
const char* basicName;
switch (indexingType & AllArrayTypes) {
case NonArray:
basicName = "NonArray";
break;
case NonArrayWithContiguous:
basicName = "NonArrayWithContiguous";
break;
case NonArrayWithArrayStorage:
basicName = "NonArrayWithArrayStorage";
break;
case NonArrayWithSlowPutArrayStorage:
basicName = "NonArrayWithSlowPutArrayStorage";
break;
case ArrayClass:
basicName = "ArrayClass";
break;
case ArrayWithContiguous:
basicName = "ArrayWithContiguous";
break;
case ArrayWithArrayStorage:
basicName = "ArrayWithArrayStorage";
break;
case ArrayWithSlowPutArrayStorage:
basicName = "ArrayWithSlowPutArrayStorage";
break;
default:
basicName = "Unknown!";
break;
}
snprintf(
result, sizeof(result), "%s%s", basicName,
(indexingType & MayHaveIndexedAccessors) ? "|MayHaveIndexedAccessors" : "");
return result;
}
} // namespace JSC
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment