| Index: src/ic.cc
|
| diff --git a/src/ic.cc b/src/ic.cc
|
| index 640b188ab23bb1b62b59b5f9458ea6b811660f4e..19d0abbc0c4db63ba8c352b4e7c1f098514f2122 100644
|
| --- a/src/ic.cc
|
| +++ b/src/ic.cc
|
| @@ -2547,7 +2547,7 @@ CompareIC::State CompareIC::TargetState(State old_state,
|
| }
|
|
|
|
|
| -void CompareIC::UpdateCaches(Handle<Object> x, Handle<Object> y) {
|
| +Code* CompareIC::UpdateCaches(Handle<Object> x, Handle<Object> y) {
|
| HandleScope scope(isolate());
|
| State previous_left, previous_right, previous_state;
|
| ICCompareStub::DecodeMinorKey(target()->stub_info(), &previous_left,
|
| @@ -2561,7 +2561,8 @@ void CompareIC::UpdateCaches(Handle<Object> x, Handle<Object> y) {
|
| stub.set_known_map(
|
| Handle<Map>(Handle<JSObject>::cast(x)->map(), isolate()));
|
| }
|
| - set_target(*stub.GetCode(isolate()));
|
| + Handle<Code> new_target = stub.GetCode(isolate());
|
| + set_target(*new_target);
|
|
|
| #ifdef DEBUG
|
| if (FLAG_trace_ic) {
|
| @@ -2583,6 +2584,8 @@ void CompareIC::UpdateCaches(Handle<Object> x, Handle<Object> y) {
|
| if (previous_state == UNINITIALIZED) {
|
| PatchInlinedSmiCode(address(), ENABLE_INLINED_SMI_CHECK);
|
| }
|
| +
|
| + return *new_target;
|
| }
|
|
|
|
|
| @@ -2591,8 +2594,7 @@ RUNTIME_FUNCTION(Code*, CompareIC_Miss) {
|
| HandleScope scope(isolate);
|
| ASSERT(args.length() == 3);
|
| CompareIC ic(isolate, static_cast<Token::Value>(args.smi_at(2)));
|
| - ic.UpdateCaches(args.at<Object>(0), args.at<Object>(1));
|
| - return ic.raw_target();
|
| + return ic.UpdateCaches(args.at<Object>(0), args.at<Object>(1));
|
| }
|
|
|
|
|
| @@ -2703,9 +2705,8 @@ Builtins::JavaScript BinaryOpIC::TokenToJSBuiltin(Token::Value op) {
|
| }
|
|
|
|
|
| -MaybeObject* ToBooleanIC::ToBoolean(Handle<Object> object,
|
| - Code::ExtraICState extra_ic_state) {
|
| - ToBooleanStub stub(extra_ic_state);
|
| +MaybeObject* ToBooleanIC::ToBoolean(Handle<Object> object) {
|
| + ToBooleanStub stub(target()->extended_extra_ic_state());
|
| bool to_boolean_value = stub.UpdateStatus(object);
|
| Handle<Code> code = stub.GetCode(isolate());
|
| set_target(*code);
|
| @@ -2718,8 +2719,7 @@ RUNTIME_FUNCTION(MaybeObject*, ToBooleanIC_Miss) {
|
| HandleScope scope(isolate);
|
| Handle<Object> object = args.at<Object>(0);
|
| ToBooleanIC ic(isolate);
|
| - Code::ExtraICState extra_ic_state = ic.target()->extended_extra_ic_state();
|
| - return ic.ToBoolean(object, extra_ic_state);
|
| + return ic.ToBoolean(object);
|
| }
|
|
|
|
|
|
|