Lines Matching refs:receiver
27 JSHandle<JSTaggedValue> receiver)
38 if (receiver->IsNumber()) {
39 receiver = JSHandle<JSTaggedValue>::Cast(factory->NewJSPrimitiveRef(PrimitiveType::PRIMITIVE_NUMBER, receiver));
40 } else if (receiver->IsString()) {
41 originhclass = JSHandle<JSHClass>(thread_, receiver->GetTaggedObject()->GetClass());
42 receiver = JSHandle<JSTaggedValue>::Cast(factory->NewJSPrimitiveRef(PrimitiveType::PRIMITIVE_STRING, receiver));
44 JSHandle<JSHClass> hclass(GetThread(), receiver->GetTaggedObject()->GetClass());
91 void ICRuntime::UpdateLoadStringHandler(JSHandle<JSTaggedValue> receiver)
97 JSHandle<JSHClass> hclass(GetThread(), receiver->GetTaggedObject()->GetClass());
101 void ICRuntime::UpdateTypedArrayHandler(JSHandle<JSTaggedValue> receiver)
107 LoadHandler::LoadTypedArrayElement(thread_, JSHandle<JSTypedArray>(receiver));
108 JSHandle<JSHClass> hclass(GetThread(), receiver->GetTaggedObject()->GetClass());
113 JSHandle<JSTaggedValue> receiver)
126 JSHandle<JSHClass> hclass(thread_, JSHandle<JSObject>::Cast(receiver)->GetClass());
136 JSHandle<JSHClass> hclass(thread_, JSHandle<JSObject>::Cast(receiver)->GetClass());
155 void ICRuntime::TraceIC([[maybe_unused]] JSHandle<JSTaggedValue> receiver,
164 << ", receiver is " << receiver->GetTaggedObject()->GetClass()->IsDictionaryMode()
168 << ", receiver is " << receiver->GetTaggedObject()->GetClass()->IsDictionaryMode()
174 JSTaggedValue LoadICRuntime::LoadValueMiss(JSHandle<JSTaggedValue> receiver, JSHandle<JSTaggedValue> key)
176 JSTaggedValue::RequireObjectCoercible(thread_, receiver, "Cannot load property of null or undefined");
179 if ((!receiver->IsJSObject() || receiver->HasOrdinaryGet()) && !receiver->IsString()) {
183 return JSTaggedValue::GetProperty(thread_, receiver, propKey).GetValue().GetTaggedValue();
185 if (receiver->IsTypedArray() || receiver->IsSharedTypedArray()) {
186 return LoadTypedArrayValueMiss(receiver, key);
189 if (receiver->IsJSSharedArray()) {
190 return JSSharedArray::GetProperty(thread_, receiver, key, SCheckMode::CHECK).GetValue().GetTaggedValue();
192 ObjectOperator op(GetThread(), receiver, key);
196 if (receiver->IsString()) {
202 UpdateLoadStringHandler(receiver);
205 op = ObjectOperator(GetThread(), receiver, key);
213 TraceIC(receiver, key);
219 UpdateLoadHandler(op, key, receiver);
225 JSTaggedValue LoadICRuntime::LoadMiss(JSHandle<JSTaggedValue> receiver, JSHandle<JSTaggedValue> key)
227 if ((!receiver->IsJSObject() || receiver->HasOrdinaryGet()) &&
228 !receiver->IsString() && !receiver->IsNumber()) {
229 return LoadOrdinaryGet(receiver, key);
246 return CallPrivateGetter(receiver, key);
252 !JSTaggedValue::GetOwnProperty(thread_, receiver, key, desc)) {
257 ObjectOperator op(GetThread(), receiver, key);
261 op = ObjectOperator(GetThread(), receiver, key);
272 TraceIC(receiver, key);
279 UpdateLoadHandler(op, key, receiver);
283 JSTaggedValue LoadICRuntime::LoadOrdinaryGet(JSHandle<JSTaggedValue> receiver, JSHandle<JSTaggedValue> key)
288 return JSTaggedValue::GetProperty(thread_, receiver, propKey).GetValue().GetTaggedValue();
291 inline JSTaggedValue LoadICRuntime::CallPrivateGetter(JSHandle<JSTaggedValue> receiver, JSHandle<JSTaggedValue> key)
295 EcmaInterpreter::NewRuntimeCallInfo(thread_, key, receiver, undefined, 0); // 0: getter has 0 argument
302 JSTaggedValue LoadICRuntime::LoadTypedArrayValueMiss(JSHandle<JSTaggedValue> receiver, JSHandle<JSTaggedValue> key)
309 if (!JSTypedArray::IsValidIntegerIndex(receiver, numericIndex) || !GetThread()->GetEcmaVM()->ICEnabled()) {
311 return JSTaggedValue::GetProperty(GetThread(), receiver, propKey).GetValue().GetTaggedValue();
313 UpdateTypedArrayHandler(receiver);
316 JSType type = receiver->GetTaggedObject()->GetClass()->GetObjectType();
317 return JSTypedArray::FastGetPropertyByIndex(GetThread(), receiver.GetTaggedValue(), index, type);
319 ObjectOperator op(GetThread(), receiver, key);
323 op = ObjectOperator(GetThread(), receiver, key);
331 TraceIC(receiver, key);
337 UpdateLoadHandler(op, key, receiver);
342 JSTaggedValue StoreICRuntime::StoreMiss(JSHandle<JSTaggedValue> receiver, JSHandle<JSTaggedValue> key,
349 if (!receiver->IsJSObject() || receiver->HasOrdinaryGet()) {
351 bool success = JSTaggedValue::SetProperty(GetThread(), receiver, key, value, true);
355 if (receiver->IsTypedArray() || receiver->IsSharedTypedArray()) {
356 return StoreTypedArrayValueMiss(receiver, key, value);
372 UpdateReceiverHClass(JSHandle<JSTaggedValue>(GetThread(), JSHandle<JSObject>::Cast(receiver)->GetClass()));
375 if (receiver->IsJSSharedArray()) {
376 bool success = JSSharedArray::SetProperty(thread_, receiver, key, value, true, SCheckMode::CHECK);
384 return CallPrivateSetter(receiver, key, value);
390 !JSTaggedValue::GetOwnProperty(thread_, receiver, key, desc)) {
395 ObjectOperator op(GetThread(), receiver, key, isOwn ? OperatorType::OWN : OperatorType::PROTOTYPE_CHAIN);
406 bool enumerable = !(receiver->IsClassPrototype() || receiver->IsClassConstructor());
418 TraceIC(receiver, key);
425 UpdateStoreHandler(op, key, receiver);
431 inline JSTaggedValue StoreICRuntime::CallPrivateSetter(JSHandle<JSTaggedValue> receiver, JSHandle<JSTaggedValue> key,
436 EcmaInterpreter::NewRuntimeCallInfo(thread_, key, receiver, undefined, 1); // 1: setter has 1 argument
444 JSTaggedValue StoreICRuntime::StoreTypedArrayValueMiss(JSHandle<JSTaggedValue> receiver, JSHandle<JSTaggedValue> key,
452 if (!JSTypedArray::IsValidIntegerIndex(receiver, numericIndex) || value->IsECMAObject() ||
455 bool success = JSTaggedValue::SetProperty(GetThread(), receiver, propKey, value, true);
459 UpdateTypedArrayHandler(receiver);
462 JSType type = receiver->GetTaggedObject()->GetClass()->GetObjectType();
463 return JSTypedArray::FastSetPropertyByIndex(GetThread(), receiver.GetTaggedValue(), index,
466 UpdateReceiverHClass(JSHandle<JSTaggedValue>(GetThread(), JSHandle<JSObject>::Cast(receiver)->GetClass()));
467 ObjectOperator op(GetThread(), receiver, key);
470 op = ObjectOperator(GetThread(), receiver, key);
478 TraceIC(receiver, key);
485 UpdateStoreHandler(op, key, receiver);