| Index: src/ic.cc
|
| diff --git a/src/ic.cc b/src/ic.cc
|
| index 255f6e89eb3a0caf0590d52a960d3e6f1450d6de..8b3b4723fe215f6ad68566d6a7c3ed70067c3e14 100644
|
| --- a/src/ic.cc
|
| +++ b/src/ic.cc
|
| @@ -1108,7 +1108,7 @@ static Handle<Object> TryConvertKey(Handle<Object> key, Isolate* isolate) {
|
| MaybeObject* KeyedLoadIC::Load(State state,
|
| Handle<Object> object,
|
| Handle<Object> key,
|
| - bool force_generic_stub) {
|
| + ICMissMode miss_mode) {
|
| // Check for values that can be converted into a symbol directly or
|
| // is representable as a smi.
|
| key = TryConvertKey(key, isolate());
|
| @@ -1209,7 +1209,7 @@ MaybeObject* KeyedLoadIC::Load(State state,
|
|
|
| if (use_ic) {
|
| Handle<Code> stub = generic_stub();
|
| - if (!force_generic_stub) {
|
| + if (miss_mode != MISS_FORCE_GENERIC) {
|
| if (object->IsString() && key->IsNumber()) {
|
| if (state == UNINITIALIZED) {
|
| stub = string_stub();
|
| @@ -1880,7 +1880,7 @@ MaybeObject* KeyedStoreIC::Store(State state,
|
| Handle<Object> object,
|
| Handle<Object> key,
|
| Handle<Object> value,
|
| - bool force_generic) {
|
| + ICMissMode miss_mode) {
|
| // Check for values that can be converted into a symbol directly or
|
| // is representable as a smi.
|
| key = TryConvertKey(key, isolate());
|
| @@ -1942,7 +1942,7 @@ MaybeObject* KeyedStoreIC::Store(State state,
|
| if (receiver->elements()->map() ==
|
| isolate()->heap()->non_strict_arguments_elements_map()) {
|
| stub = non_strict_arguments_stub();
|
| - } else if (!force_generic) {
|
| + } else if (miss_mode != MISS_FORCE_GENERIC) {
|
| if (key->IsSmi() && (target() != *non_strict_arguments_stub())) {
|
| StubKind stub_kind = GetStubKind(receiver, key, value);
|
| stub = ComputeStub(receiver, stub_kind, strict_mode, stub);
|
| @@ -2110,7 +2110,7 @@ RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_Miss) {
|
| ASSERT(args.length() == 2);
|
| KeyedLoadIC ic(isolate);
|
| IC::State state = IC::StateFrom(ic.target(), args[0], args[1]);
|
| - return ic.Load(state, args.at<Object>(0), args.at<Object>(1), false);
|
| + return ic.Load(state, args.at<Object>(0), args.at<Object>(1), MISS);
|
| }
|
|
|
|
|
| @@ -2119,7 +2119,10 @@ RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_MissForceGeneric) {
|
| ASSERT(args.length() == 2);
|
| KeyedLoadIC ic(isolate);
|
| IC::State state = IC::StateFrom(ic.target(), args[0], args[1]);
|
| - return ic.Load(state, args.at<Object>(0), args.at<Object>(1), true);
|
| + return ic.Load(state,
|
| + args.at<Object>(0),
|
| + args.at<Object>(1),
|
| + MISS_FORCE_GENERIC);
|
| }
|
|
|
|
|
| @@ -2211,7 +2214,7 @@ RUNTIME_FUNCTION(MaybeObject*, KeyedStoreIC_Miss) {
|
| args.at<Object>(0),
|
| args.at<Object>(1),
|
| args.at<Object>(2),
|
| - false);
|
| + MISS);
|
| }
|
|
|
|
|
| @@ -2244,7 +2247,7 @@ RUNTIME_FUNCTION(MaybeObject*, KeyedStoreIC_MissForceGeneric) {
|
| args.at<Object>(0),
|
| args.at<Object>(1),
|
| args.at<Object>(2),
|
| - true);
|
| + MISS_FORCE_GENERIC);
|
| }
|
|
|
|
|
|
|