diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-12-08 13:24:59 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-12-08 13:24:59 +0100 |
commit | cd7832ee326b0c424d4ad1538efd074c86a68f9b (patch) | |
tree | 158872ea92d5df96b1290b578cbe574aaa2acfd5 /chromium/v8/src/ic/ic.cc | |
parent | 93cdb9906305e23304d9ff55350b7557fc1850cb (diff) | |
parent | 69b8f9169ffd66fdeca1ac60a4bc06b91d106186 (diff) | |
download | qtwebengine-chromium-cd7832ee326b0c424d4ad1538efd074c86a68f9b.tar.gz |
Merge remote-tracking branch 'origin/upstream-master' into 63-based
Change-Id: I4d88054034fccbb7409fa65c37d4498b74ec0578
Diffstat (limited to 'chromium/v8/src/ic/ic.cc')
-rw-r--r-- | chromium/v8/src/ic/ic.cc | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/chromium/v8/src/ic/ic.cc b/chromium/v8/src/ic/ic.cc index fe7e372c6bb..09920241eec 100644 --- a/chromium/v8/src/ic/ic.cc +++ b/chromium/v8/src/ic/ic.cc @@ -1366,23 +1366,19 @@ void StoreIC::UpdateCaches(LookupIterator* lookup, Handle<Object> value, TRACE_IC("StoreIC", lookup->name()); } -namespace { - -Handle<Object> StoreGlobal(Isolate* isolate, Handle<PropertyCell> cell) { - return isolate->factory()->NewWeakCell(cell); -} - -} // namespace - Handle<Object> StoreIC::GetMapIndependentHandler(LookupIterator* lookup) { switch (lookup->state()) { case LookupIterator::TRANSITION: { Handle<JSObject> holder = lookup->GetHolder<JSObject>(); - auto store_target = lookup->GetStoreTarget(); + Handle<JSObject> store_target = lookup->GetStoreTarget(); if (store_target->IsJSGlobalObject()) { TRACE_HANDLER_STATS(isolate(), StoreIC_StoreGlobalTransitionDH); - return StoreGlobal(isolate(), lookup->transition_cell()); + + Handle<Object> handler = StoreHandler::StoreTransition( + isolate(), receiver_map(), store_target, lookup->transition_cell(), + lookup->name()); + return handler; } // Currently not handled by CompileStoreTransition. if (!holder->HasFastProperties()) { @@ -1477,7 +1473,8 @@ Handle<Object> StoreIC::GetMapIndependentHandler(LookupIterator* lookup) { if (lookup->is_dictionary_holder()) { if (holder->IsJSGlobalObject()) { TRACE_HANDLER_STATS(isolate(), StoreIC_StoreGlobalDH); - return StoreGlobal(isolate(), lookup->GetPropertyCell()); + return StoreHandler::StoreGlobal(isolate(), + lookup->GetPropertyCell()); } TRACE_HANDLER_STATS(isolate(), StoreIC_StoreNormalDH); DCHECK(holder.is_identical_to(receiver)); |