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 |