Commit ca9a3c71 authored by danno@chromium.org's avatar danno@chromium.org

Remove platform-specific dead code for KeyedStores

R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/22745003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16227 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent bbf9018c
This diff is collapsed.
...@@ -596,19 +596,9 @@ void KeyedStoreElementStub::Generate(MacroAssembler* masm) { ...@@ -596,19 +596,9 @@ void KeyedStoreElementStub::Generate(MacroAssembler* masm) {
case FAST_ELEMENTS: case FAST_ELEMENTS:
case FAST_HOLEY_ELEMENTS: case FAST_HOLEY_ELEMENTS:
case FAST_SMI_ELEMENTS: case FAST_SMI_ELEMENTS:
case FAST_HOLEY_SMI_ELEMENTS: { case FAST_HOLEY_SMI_ELEMENTS:
KeyedStoreStubCompiler::GenerateStoreFastElement(masm,
is_js_array_,
elements_kind_,
store_mode_);
}
break;
case FAST_DOUBLE_ELEMENTS: case FAST_DOUBLE_ELEMENTS:
case FAST_HOLEY_DOUBLE_ELEMENTS: case FAST_HOLEY_DOUBLE_ELEMENTS:
KeyedStoreStubCompiler::GenerateStoreFastDoubleElement(masm,
is_js_array_,
store_mode_);
break;
case EXTERNAL_BYTE_ELEMENTS: case EXTERNAL_BYTE_ELEMENTS:
case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
case EXTERNAL_SHORT_ELEMENTS: case EXTERNAL_SHORT_ELEMENTS:
...@@ -618,7 +608,7 @@ void KeyedStoreElementStub::Generate(MacroAssembler* masm) { ...@@ -618,7 +608,7 @@ void KeyedStoreElementStub::Generate(MacroAssembler* masm) {
case EXTERNAL_FLOAT_ELEMENTS: case EXTERNAL_FLOAT_ELEMENTS:
case EXTERNAL_DOUBLE_ELEMENTS: case EXTERNAL_DOUBLE_ELEMENTS:
case EXTERNAL_PIXEL_ELEMENTS: case EXTERNAL_PIXEL_ELEMENTS:
KeyedStoreStubCompiler::GenerateStoreExternalArray(masm, elements_kind_); UNREACHABLE();
break; break;
case DICTIONARY_ELEMENTS: case DICTIONARY_ELEMENTS:
KeyedStoreStubCompiler::GenerateStoreDictionaryElement(masm); KeyedStoreStubCompiler::GenerateStoreDictionaryElement(masm);
......
...@@ -194,8 +194,6 @@ DEFINE_implication(harmony_observation, harmony_collections) ...@@ -194,8 +194,6 @@ DEFINE_implication(harmony_observation, harmony_collections)
// Flags for experimental implementation features. // Flags for experimental implementation features.
DEFINE_bool(packed_arrays, true, "optimizes arrays that have no holes") DEFINE_bool(packed_arrays, true, "optimizes arrays that have no holes")
DEFINE_bool(smi_only_arrays, true, "tracks arrays with only smi values") DEFINE_bool(smi_only_arrays, true, "tracks arrays with only smi values")
DEFINE_bool(compiled_keyed_stores, true, "use optimizing compiler to "
"generate keyed store stubs")
DEFINE_bool(clever_optimizations, DEFINE_bool(clever_optimizations,
true, true,
"Optimize object size, Array shift, DOM strings and string +") "Optimize object size, Array shift, DOM strings and string +")
......
This diff is collapsed.
...@@ -1847,18 +1847,6 @@ Handle<Code> KeyedStoreIC::StoreElementStub(Handle<JSObject> receiver, ...@@ -1847,18 +1847,6 @@ Handle<Code> KeyedStoreIC::StoreElementStub(Handle<JSObject> receiver,
return strict_mode == kStrictMode ? generic_stub_strict() : generic_stub(); return strict_mode == kStrictMode ? generic_stub_strict() : generic_stub();
} }
if (!FLAG_compiled_keyed_stores &&
(store_mode == STORE_NO_TRANSITION_HANDLE_COW ||
store_mode == STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS)) {
// TODO(danno): We'll soon handle MONOMORPHIC ICs that also support
// copying COW arrays and silently ignoring some OOB stores into external
// arrays, but for now use the generic.
TRACE_GENERIC_IC(isolate(), "KeyedIC", "COW/OOB external array");
return strict_mode == kStrictMode
? generic_stub_strict()
: generic_stub();
}
State ic_state = target()->ic_state(); State ic_state = target()->ic_state();
Handle<Map> receiver_map(receiver->map(), isolate()); Handle<Map> receiver_map(receiver->map(), isolate());
if (ic_state == UNINITIALIZED || ic_state == PREMONOMORPHIC) { if (ic_state == UNINITIALIZED || ic_state == PREMONOMORPHIC) {
...@@ -2139,8 +2127,7 @@ MaybeObject* KeyedStoreIC::Store(State state, ...@@ -2139,8 +2127,7 @@ MaybeObject* KeyedStoreIC::Store(State state,
if (receiver->map()->is_deprecated()) { if (receiver->map()->is_deprecated()) {
JSObject::MigrateInstance(receiver); JSObject::MigrateInstance(receiver);
} }
bool key_is_smi_like = key->IsSmi() || bool key_is_smi_like = key->IsSmi() || !key->ToSmi()->IsFailure();
(FLAG_compiled_keyed_stores && !key->ToSmi()->IsFailure());
if (receiver->elements()->map() == if (receiver->elements()->map() ==
isolate()->heap()->non_strict_arguments_elements_map()) { isolate()->heap()->non_strict_arguments_elements_map()) {
stub = non_strict_arguments_stub(); stub = non_strict_arguments_stub();
......
...@@ -1855,9 +1855,8 @@ Handle<Code> KeyedStoreStubCompiler::CompileStoreElement( ...@@ -1855,9 +1855,8 @@ Handle<Code> KeyedStoreStubCompiler::CompileStoreElement(
ElementsKind elements_kind = receiver_map->elements_kind(); ElementsKind elements_kind = receiver_map->elements_kind();
bool is_jsarray = receiver_map->instance_type() == JS_ARRAY_TYPE; bool is_jsarray = receiver_map->instance_type() == JS_ARRAY_TYPE;
Handle<Code> stub; Handle<Code> stub;
if (FLAG_compiled_keyed_stores && if (receiver_map->has_fast_elements() ||
(receiver_map->has_fast_elements() || receiver_map->has_external_array_elements()) {
receiver_map->has_external_array_elements())) {
stub = KeyedStoreFastElementStub( stub = KeyedStoreFastElementStub(
is_jsarray, is_jsarray,
elements_kind, elements_kind,
...@@ -1998,9 +1997,8 @@ Handle<Code> KeyedStoreStubCompiler::CompileStoreElementPolymorphic( ...@@ -1998,9 +1997,8 @@ Handle<Code> KeyedStoreStubCompiler::CompileStoreElementPolymorphic(
is_js_array, is_js_array,
store_mode_).GetCode(isolate()); store_mode_).GetCode(isolate());
} else { } else {
if (FLAG_compiled_keyed_stores && if (receiver_map->has_fast_elements() ||
(receiver_map->has_fast_elements() || receiver_map->has_external_array_elements()) {
receiver_map->has_external_array_elements())) {
cached_stub = KeyedStoreFastElementStub( cached_stub = KeyedStoreFastElementStub(
is_js_array, is_js_array,
elements_kind, elements_kind,
......
...@@ -984,18 +984,6 @@ class KeyedStoreStubCompiler: public BaseStoreStubCompiler { ...@@ -984,18 +984,6 @@ class KeyedStoreStubCompiler: public BaseStoreStubCompiler {
Handle<Code> CompileStoreElementPolymorphic(MapHandleList* receiver_maps); Handle<Code> CompileStoreElementPolymorphic(MapHandleList* receiver_maps);
static void GenerateStoreFastElement(MacroAssembler* masm,
bool is_js_array,
ElementsKind element_kind,
KeyedAccessStoreMode store_mode);
static void GenerateStoreFastDoubleElement(MacroAssembler* masm,
bool is_js_array,
KeyedAccessStoreMode store_mode);
static void GenerateStoreExternalArray(MacroAssembler* masm,
ElementsKind elements_kind);
static void GenerateStoreDictionaryElement(MacroAssembler* masm); static void GenerateStoreDictionaryElement(MacroAssembler* masm);
protected: protected:
......
...@@ -152,12 +152,8 @@ bool TypeFeedbackOracle::StoreIsMonomorphicNormal(TypeFeedbackId ast_id) { ...@@ -152,12 +152,8 @@ bool TypeFeedbackOracle::StoreIsMonomorphicNormal(TypeFeedbackId ast_id) {
if (map_or_code->IsMap()) return true; if (map_or_code->IsMap()) return true;
if (map_or_code->IsCode()) { if (map_or_code->IsCode()) {
Handle<Code> code = Handle<Code>::cast(map_or_code); Handle<Code> code = Handle<Code>::cast(map_or_code);
bool standard_store = FLAG_compiled_keyed_stores ||
(Code::GetKeyedAccessStoreMode(code->extra_ic_state()) ==
STANDARD_STORE);
bool preliminary_checks = bool preliminary_checks =
code->is_keyed_store_stub() && code->is_keyed_store_stub() &&
standard_store &&
code->ic_state() == MONOMORPHIC && code->ic_state() == MONOMORPHIC &&
Code::ExtractTypeFromFlags(code->flags()) == Code::NORMAL; Code::ExtractTypeFromFlags(code->flags()) == Code::NORMAL;
if (!preliminary_checks) return false; if (!preliminary_checks) return false;
...@@ -174,10 +170,7 @@ bool TypeFeedbackOracle::StoreIsKeyedPolymorphic(TypeFeedbackId ast_id) { ...@@ -174,10 +170,7 @@ bool TypeFeedbackOracle::StoreIsKeyedPolymorphic(TypeFeedbackId ast_id) {
Handle<Object> map_or_code = GetInfo(ast_id); Handle<Object> map_or_code = GetInfo(ast_id);
if (map_or_code->IsCode()) { if (map_or_code->IsCode()) {
Handle<Code> code = Handle<Code>::cast(map_or_code); Handle<Code> code = Handle<Code>::cast(map_or_code);
bool standard_store = FLAG_compiled_keyed_stores || return code->is_keyed_store_stub() &&
(Code::GetKeyedAccessStoreMode(code->extra_ic_state()) ==
STANDARD_STORE);
return code->is_keyed_store_stub() && standard_store &&
code->ic_state() == POLYMORPHIC; code->ic_state() == POLYMORPHIC;
} }
return false; return false;
......
This diff is collapsed.
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