summaryrefslogtreecommitdiff
path: root/deps/v8/src/ic.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/ic.cc')
-rw-r--r--deps/v8/src/ic.cc35
1 files changed, 8 insertions, 27 deletions
diff --git a/deps/v8/src/ic.cc b/deps/v8/src/ic.cc
index 643fa8841..b8d4b40bc 100644
--- a/deps/v8/src/ic.cc
+++ b/deps/v8/src/ic.cc
@@ -1053,33 +1053,18 @@ Handle<Code> KeyedLoadIC::ComputePolymorphicStub(
}
-static Handle<Object> TryConvertKey(Handle<Object> key, Isolate* isolate) {
- // This helper implements a few common fast cases for converting
- // non-smi keys of keyed loads/stores to a smi or a string.
- if (key->IsHeapNumber()) {
- double value = Handle<HeapNumber>::cast(key)->value();
- if (isnan(value)) {
- key = isolate->factory()->nan_symbol();
- } else {
- int int_value = FastD2I(value);
- if (value == int_value && Smi::IsValid(int_value)) {
- key = Handle<Smi>(Smi::FromInt(int_value));
- }
- }
- } else if (key->IsUndefined()) {
- key = isolate->factory()->undefined_symbol();
- }
- return key;
-}
-
-
MaybeObject* KeyedLoadIC::Load(State state,
Handle<Object> object,
Handle<Object> key,
bool force_generic_stub) {
- // Check for values that can be converted into a symbol directly or
- // is representable as a smi.
- key = TryConvertKey(key, isolate());
+ // Check for values that can be converted into a symbol.
+ // TODO(1295): Remove this code.
+ if (key->IsHeapNumber() &&
+ isnan(Handle<HeapNumber>::cast(key)->value())) {
+ key = isolate()->factory()->nan_symbol();
+ } else if (key->IsUndefined()) {
+ key = isolate()->factory()->undefined_symbol();
+ }
if (key->IsSymbol()) {
Handle<String> name = Handle<String>::cast(key);
@@ -1776,10 +1761,6 @@ MaybeObject* KeyedStoreIC::Store(State state,
Handle<Object> key,
Handle<Object> value,
bool force_generic) {
- // Check for values that can be converted into a symbol directly or
- // is representable as a smi.
- key = TryConvertKey(key, isolate());
-
if (key->IsSymbol()) {
Handle<String> name = Handle<String>::cast(key);