Index: src/arm/stub-cache-arm.cc |
diff --git a/src/arm/stub-cache-arm.cc b/src/arm/stub-cache-arm.cc |
index 47f09dea127427eac3e6b12b6a4d33d8534453fa..61f1ffe5189e1b8ac6f8489d86126b27850c5415 100644 |
--- a/src/arm/stub-cache-arm.cc |
+++ b/src/arm/stub-cache-arm.cc |
@@ -2980,12 +2980,20 @@ Handle<Code> KeyedStoreStubCompiler::CompileStoreElement( |
// ----------------------------------- |
ElementsKind elements_kind = receiver_map->elements_kind(); |
bool is_js_array = receiver_map->instance_type() == JS_ARRAY_TYPE; |
- Handle<Code> stub = |
- KeyedStoreElementStub(is_js_array, |
- elements_kind, |
- store_mode_).GetCode(isolate()); |
- |
- __ DispatchMap(r2, r3, receiver_map, stub, DO_SMI_CHECK); |
+ if (FLAG_compiled_keyed_stores && |
+ (receiver_map->has_fast_elements() || |
+ receiver_map->has_external_array_elements())) { |
+ Handle<Code> stub = KeyedStoreFastElementStub( |
+ is_js_array, |
+ elements_kind, |
+ store_mode_).GetCode(isolate()); |
+ __ DispatchMap(r2, r3, receiver_map, stub, DO_SMI_CHECK); |
+ } else { |
+ Handle<Code> stub = |
+ KeyedStoreElementStub(is_js_array, elements_kind, |
+ store_mode_).GetCode(isolate()); |
+ __ DispatchMap(r2, r3, receiver_map, stub, DO_SMI_CHECK); |
Hannes Payer (out of office)
2013/03/20 10:22:35
Can you declare Handle<Code> stube before the if/e
danno
2013/03/20 11:44:10
Done.
|
+ } |
TailCallBuiltin(masm(), MissBuiltin(kind())); |