| Index: src/stub-cache.cc
|
| diff --git a/src/stub-cache.cc b/src/stub-cache.cc
|
| index 8c6d84c6130f15cab22fc42466af5a632e011707..7bbb333f1156011f9f84f788a0722e7401f477f0 100644
|
| --- a/src/stub-cache.cc
|
| +++ b/src/stub-cache.cc
|
| @@ -485,38 +485,7 @@ MaybeObject* StubCache::ComputeStoreField(String* name,
|
| }
|
|
|
|
|
| -namespace {
|
| -
|
| -ExternalArrayType ElementsKindToExternalArrayType(JSObject::ElementsKind kind) {
|
| - switch (kind) {
|
| - case JSObject::EXTERNAL_BYTE_ELEMENTS:
|
| - return kExternalByteArray;
|
| - case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
|
| - return kExternalUnsignedByteArray;
|
| - case JSObject::EXTERNAL_SHORT_ELEMENTS:
|
| - return kExternalShortArray;
|
| - case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
|
| - return kExternalUnsignedShortArray;
|
| - case JSObject::EXTERNAL_INT_ELEMENTS:
|
| - return kExternalIntArray;
|
| - case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
|
| - return kExternalUnsignedIntArray;
|
| - case JSObject::EXTERNAL_FLOAT_ELEMENTS:
|
| - return kExternalFloatArray;
|
| - case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
|
| - return kExternalDoubleArray;
|
| - case JSObject::EXTERNAL_PIXEL_ELEMENTS:
|
| - return kExternalPixelArray;
|
| - default:
|
| - UNREACHABLE();
|
| - return static_cast<ExternalArrayType>(0);
|
| - }
|
| -}
|
| -
|
| -} // anonymous namespace
|
| -
|
| -
|
| -MaybeObject* StubCache::ComputeKeyedLoadOrStoreExternalArray(
|
| +MaybeObject* StubCache::ComputeKeyedLoadOrStoreElement(
|
| JSObject* receiver,
|
| bool is_store,
|
| StrictModeFlag strict_mode) {
|
| @@ -526,67 +495,19 @@ MaybeObject* StubCache::ComputeKeyedLoadOrStoreExternalArray(
|
| Code::KEYED_LOAD_IC,
|
| NORMAL,
|
| strict_mode);
|
| - ExternalArrayType array_type =
|
| - ElementsKindToExternalArrayType(receiver->GetElementsKind());
|
| String* name = is_store
|
| - ? isolate()->heap()->KeyedStoreSpecializedMonomorphic_symbol()
|
| - : isolate()->heap()->KeyedLoadSpecializedMonomorphic_symbol();
|
| - Object* maybe_code = receiver->map()->FindInCodeCache(name, flags);
|
| - if (!maybe_code->IsUndefined()) return Code::cast(maybe_code);
|
| -
|
| - MaybeObject* maybe_new_code = NULL;
|
| - if (is_store) {
|
| - ExternalArrayStoreStubCompiler compiler(strict_mode);
|
| - maybe_new_code = compiler.CompileStore(receiver, array_type);
|
| - } else {
|
| - ExternalArrayLoadStubCompiler compiler(strict_mode);
|
| - maybe_new_code = compiler.CompileLoad(receiver, array_type);
|
| - }
|
| - Code* code;
|
| - if (!maybe_new_code->To(&code)) return maybe_new_code;
|
| - code->set_external_array_type(array_type);
|
| - if (is_store) {
|
| - PROFILE(isolate_,
|
| - CodeCreateEvent(Logger::KEYED_EXTERNAL_ARRAY_STORE_IC_TAG,
|
| - Code::cast(code), 0));
|
| - } else {
|
| - PROFILE(isolate_,
|
| - CodeCreateEvent(Logger::KEYED_EXTERNAL_ARRAY_LOAD_IC_TAG,
|
| - Code::cast(code), 0));
|
| - }
|
| - ASSERT(code->IsCode());
|
| - Object* result;
|
| - { MaybeObject* maybe_result =
|
| - receiver->UpdateMapCodeCache(name, Code::cast(code));
|
| - if (!maybe_result->ToObject(&result)) return maybe_result;
|
| - }
|
| - return code;
|
| -}
|
| -
|
| -
|
| -MaybeObject* StubCache::ComputeKeyedLoadOrStoreFastElement(
|
| - JSObject* receiver,
|
| - bool is_store,
|
| - StrictModeFlag strict_mode) {
|
| - Code::Flags flags =
|
| - Code::ComputeMonomorphicFlags(
|
| - is_store ? Code::KEYED_STORE_IC :
|
| - Code::KEYED_LOAD_IC,
|
| - NORMAL,
|
| - strict_mode);
|
| - String* name = is_store
|
| - ? isolate()->heap()->KeyedStoreSpecializedMonomorphic_symbol()
|
| - : isolate()->heap()->KeyedLoadSpecializedMonomorphic_symbol();
|
| + ? isolate()->heap()->KeyedStoreElementMonomorphic_symbol()
|
| + : isolate()->heap()->KeyedLoadElementMonomorphic_symbol();
|
| Object* maybe_code = receiver->map()->FindInCodeCache(name, flags);
|
| if (!maybe_code->IsUndefined()) return Code::cast(maybe_code);
|
|
|
| MaybeObject* maybe_new_code = NULL;
|
| if (is_store) {
|
| KeyedStoreStubCompiler compiler(strict_mode);
|
| - maybe_new_code = compiler.CompileStoreFastElement(receiver->map());
|
| + maybe_new_code = compiler.CompileStoreElement(receiver->map());
|
| } else {
|
| KeyedLoadStubCompiler compiler;
|
| - maybe_new_code = compiler.CompileLoadFastElement(receiver->map());
|
| + maybe_new_code = compiler.CompileLoadElement(receiver->map());
|
| }
|
| Code* code;
|
| if (!maybe_new_code->To(&code)) return maybe_new_code;
|
| @@ -1923,38 +1844,4 @@ void CallOptimization::AnalyzePossibleApiFunction(JSFunction* function) {
|
| }
|
|
|
|
|
| -MaybeObject* ExternalArrayLoadStubCompiler::GetCode() {
|
| - Object* result;
|
| - Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC,
|
| - NORMAL,
|
| - strict_mode_);
|
| - { MaybeObject* maybe_result = GetCodeWithFlags(flags,
|
| - "ExternalArrayLoadStub");
|
| - if (!maybe_result->ToObject(&result)) return maybe_result;
|
| - }
|
| - Code* code = Code::cast(result);
|
| - USE(code);
|
| - PROFILE(isolate(),
|
| - CodeCreateEvent(Logger::STUB_TAG, code, "ExternalArrayLoadStub"));
|
| - return result;
|
| -}
|
| -
|
| -
|
| -MaybeObject* ExternalArrayStoreStubCompiler::GetCode() {
|
| - Object* result;
|
| - Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_STORE_IC,
|
| - NORMAL,
|
| - strict_mode_);
|
| - { MaybeObject* maybe_result = GetCodeWithFlags(flags,
|
| - "ExternalArrayStoreStub");
|
| - if (!maybe_result->ToObject(&result)) return maybe_result;
|
| - }
|
| - Code* code = Code::cast(result);
|
| - USE(code);
|
| - PROFILE(isolate(),
|
| - CodeCreateEvent(Logger::STUB_TAG, code, "ExternalArrayStoreStub"));
|
| - return result;
|
| -}
|
| -
|
| -
|
| } } // namespace v8::internal
|
|
|