| Index: src/ic.cc
|
| diff --git a/src/ic.cc b/src/ic.cc
|
| index e09d83e6fa1ac11541abfc81d693ddbede786758..f0f5c302b325e0928848416ae20f8ec21ba6869f 100644
|
| --- a/src/ic.cc
|
| +++ b/src/ic.cc
|
| @@ -293,7 +293,7 @@ IC::State IC::StateFrom(Code* target, Object* receiver, Object* name) {
|
|
|
| RelocInfo::Mode IC::ComputeMode() {
|
| Address addr = address();
|
| - Code* code = Code::cast(isolate()->heap()->FindCodeObject(addr));
|
| + Code* code = Code::cast(isolate()->FindCodeObject(addr));
|
| for (RelocIterator it(code, RelocInfo::kCodeTargetMask);
|
| !it.done(); it.next()) {
|
| RelocInfo* info = it.rinfo();
|
| @@ -2481,6 +2481,24 @@ RUNTIME_FUNCTION(MaybeObject*, KeyedStoreIC_MissForceGeneric) {
|
| }
|
|
|
|
|
| +RUNTIME_FUNCTION(MaybeObject*, ElementsTransitionAndStoreIC_Miss) {
|
| + SealHandleScope scope(isolate);
|
| + ASSERT(args.length() == 4);
|
| + KeyedStoreIC ic(IC::EXTRA_CALL_FRAME, isolate);
|
| + Code::ExtraICState extra_ic_state = ic.target()->extra_ic_state();
|
| + Handle<Object> value = args.at<Object>(0);
|
| + Handle<Object> key = args.at<Object>(2);
|
| + Handle<Object> object = args.at<Object>(3);
|
| + StrictModeFlag strict_mode = Code::GetStrictMode(extra_ic_state);
|
| + return Runtime::SetObjectProperty(isolate,
|
| + object,
|
| + key,
|
| + value,
|
| + NONE,
|
| + strict_mode);
|
| +}
|
| +
|
| +
|
| void BinaryOpIC::patch(Code* code) {
|
| set_target(code);
|
| }
|
|
|