Lines Matching full:receiver
257 bool IC::TryRemoveInvalidPrototypeDependentStub(Handle<Object> receiver,
284 DCHECK(flag != kCacheOnReceiver || receiver->IsJSObject());
285 DCHECK(flag != kCacheOnPrototype || !receiver->IsJSReceiver());
295 if (receiver->IsJSGlobalObject()) {
296 Handle<JSGlobalObject> global = Handle<JSGlobalObject>::cast(receiver);
320 void IC::UpdateState(Handle<Object> receiver, Handle<Object> name) {
321 update_receiver_map(receiver);
324 if (receiver->IsUndefined() || receiver->IsNull()) return;
329 if (TryRemoveInvalidPrototypeDependentStub(receiver,
570 Handle<JSObject> receiver = Handle<JSObject>::cast(object);
571 if (!receiver->map()->is_deprecated()) return false;
761 // If the receiver type is already in the polymorphic IC, this indicates
991 Handle<Object> receiver = lookup->GetReceiver();
994 if (receiver->IsJSObject() || function->shared()->IsBuiltin() ||
1033 TRACE_GENERIC_IC(isolate(), "LoadIC", "incompatible receiver type");
1044 TRACE_GENERIC_IC(isolate(), "LoadIC", "incompatible receiver type");
1114 Handle<Object> receiver = lookup->GetReceiver();
1115 if (receiver->IsString() &&
1121 if (receiver->IsStringWrapper() &&
1128 if (receiver->IsJSFunction() &&
1130 receiver->IsConstructor() &&
1131 !Handle<JSFunction>::cast(receiver)
1141 bool receiver_is_holder = receiver.is_identical_to(holder);
1157 // receiver maps.
1194 if (!receiver->IsJSObject() && !function->shared()->IsBuiltin() &&
1196 // Calling sloppy non-builtins with a value as the receiver
1203 if (call_optimization.IsCompatibleReceiver(receiver, holder)) {
1299 Handle<Code> KeyedLoadIC::LoadElementStub(Handle<HeapObject> receiver) {
1301 Handle<Map> receiver_map(receiver->map(), isolate());
1314 // The first time a receiver is seen that is a transitioned version of the
1315 // previous monomorphic receiver type, assume the new ElementsKind is the
1321 if (state() == MONOMORPHIC && !receiver->IsString() &&
1324 Handle<JSObject>::cast(receiver)->GetElementsKind())) {
1334 // Determine the list of receiver maps that this call site has seen,
1343 // If the maximum number of receiver maps has been exceeded, use the generic
1383 Handle<HeapObject> receiver = Handle<HeapObject>::cast(object);
1384 if (object->IsString() || key->IsSmi()) stub = LoadElementStub(receiver);
1413 Handle<Object> receiver = it->GetReceiver();
1414 if (!receiver->IsJSObject()) return false;
1415 DCHECK(!Handle<JSObject>::cast(receiver)->map()->is_deprecated());
1445 if (receiver.is_identical_to(holder)) {
1447 // The previous receiver map might just have been deprecated,
1449 update_receiver_map(receiver);
1453 // Receiver != holder.
1454 PrototypeIterator iter(it->isolate(), receiver);
1455 if (receiver->IsJSGlobalProxy()) {
1673 Isolate* isolate, Handle<JSObject> receiver, Handle<JSGlobalObject> holder,
1680 receiver->IsJSGlobalProxy());
1683 HeapObject::UpdateMapCodeCache(receiver, name, code);
1694 Handle<JSObject> receiver = Handle<JSObject>::cast(lookup->GetReceiver());
1696 DCHECK(!receiver->IsAccessCheckNeeded() ||
1751 TRACE_GENERIC_IC(isolate(), "StoreIC", "incompatible receiver type");
1755 return compiler.CompileStoreCallback(receiver, lookup->name(), info);
1767 call_optimization.IsCompatibleReceiver(receiver, holder)) {
1768 return compiler.CompileStoreCallback(receiver, lookup->name(),
1774 return compiler.CompileStoreViaSetter(receiver, lookup->name(),
1784 DCHECK(holder.is_identical_to(receiver) ||
1785 receiver->map()->prototype() == *holder);
1790 isolate(), receiver, Handle<JSGlobalObject>::cast(holder),
1794 DCHECK(holder.is_identical_to(receiver));
1859 // superset of the original IC. Handle those here if the receiver map hasn't
1918 // If the maximum number of receiver maps has been exceeded, use the
1994 bool IsOutOfBoundsAccess(Handle<JSObject> receiver, uint32_t index) {
1996 if (receiver->IsJSArray()) {
1997 JSArray::cast(*receiver)->length()->ToArrayLength(&length);
1999 length = static_cast<uint32_t>(receiver->elements()->length());
2005 static KeyedAccessStoreMode GetStoreMode(Handle<JSObject> receiver,
2007 bool oob_access = IsOutOfBoundsAccess(receiver, index);
2008 // Don't consider this a growing store if the store would send the receiver to
2010 bool allow_growth = receiver->IsJSArray() && oob_access &&
2011 !receiver->WouldConvertToSlowElements(index);
2014 if (receiver->HasFastSmiElements()) {
2021 } else if (receiver->HasFastDoubleElements()) {
2029 if (receiver->HasFastSmiElements()) {
2035 } else if (receiver->HasFastDoubleElements()) {
2041 receiver->map()->has_fixed_typed_array_elements() && oob_access) {
2044 Heap* heap = receiver->GetHeap();
2045 if (receiver->elements()->map() == heap->fixed_cow_array_map()) {
2113 Handle<JSObject> receiver = Handle<JSObject>::cast(object);
2114 old_receiver_map = handle(receiver->map(), isolate());
2117 receiver->elements()->map() ==
2123 store_mode = GetStoreMode(receiver, index, value);
2137 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "arguments receiver");
2139 // We should go generic if receiver isn't a dictionary, but our
2153 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "non-JSObject receiver");
2240 Handle<Object> receiver = args.at<Object>(0);
2254 ic.UpdateState(receiver, key);
2255 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
2261 ic.UpdateState(receiver, key);
2262 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
2272 Handle<Object> receiver = args.at<Object>(0);
2282 ic.UpdateState(receiver, key);
2283 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
2291 Handle<Object> receiver = args.at<Object>(0);
2301 ic.UpdateState(receiver, key);
2302 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
2312 Handle<Object> receiver = args.at<Object>(0);
2324 ic.UpdateState(receiver, key);
2326 ic.Store(receiver, key, value));
2332 ic.UpdateState(receiver, key);
2334 ic.Store(receiver, key, value));
2343 Handle<Object> receiver = args.at<Object>(0);
2375 ic.UpdateState(receiver, key);
2377 ic.Store(receiver, key, value));
2383 ic.UpdateState(receiver, key);
2385 ic.Store(receiver, key, value));
2395 Handle<Object> receiver = args.at<Object>(0);
2406 ic.UpdateState(receiver, key);
2408 ic.Store(receiver, key, value));
2416 Handle<Object> receiver = args.at<Object>(0);
2427 ic.UpdateState(receiver, key);
2429 ic.Store(receiver, key, value));
2816 Handle<JSObject> receiver = args.at<JSObject>(0);
2829 DCHECK(callback->IsCompatibleReceiver(*receiver));
2836 LOG(isolate, ApiNamedPropertyAccess("store", *receiver, *name));
2837 PropertyCallbackArguments custom_args(isolate, callback->data(), *receiver,
2856 Handle<JSObject> receiver =
2861 LookupIterator it(receiver, name, holder, LookupIterator::OWN);
2880 Handle<JSObject> receiver =
2886 LookupIterator it(receiver, name, holder);
2912 Handle<JSObject> receiver = args.at<JSObject>(0);
2916 PrototypeIterator iter(isolate, receiver,
2932 JSObject::SetProperty(receiver, name, value, ic.language_mode()));
2938 // TODO(verwaest): This should probably get the holder and receiver as input.
2940 Handle<JSObject> receiver = args.at<JSObject>(0);
2948 Object::GetElement(isolate, receiver, index, language_mode));
2956 Handle<Object> receiver = args.at<Object>(0);
2970 ic.UpdateState(receiver, key);
2971 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
2977 ic.UpdateState(receiver, key);
2978 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));