Lines Matching defs:jshclass
211 JSHandle<JSHClass> JSHClass::Clone(const JSThread *thread, const JSHandle<JSHClass> &jshclass,
214 JSType type = jshclass->GetObjectType();
215 uint32_t size = IsJSTypeObject(type) ? jshclass->GetInlinedPropsStartSize() : jshclass->GetObjectSize();
216 uint32_t numInlinedProps = withoutInlinedProperties ? 0 : jshclass->GetInlinedProperties() + incInlinedProperties;
218 if (jshclass.GetTaggedValue().IsInSharedHeap()) {
224 newJsHClass->Copy(thread, *jshclass);
230 newJsHClass->SetLayout(thread, jshclass->GetLayout());
232 if (jshclass->IsTS()) {
239 JSHandle<JSHClass> JSHClass::CloneWithElementsKind(const JSThread *thread, const JSHandle<JSHClass> &jshclass,
242 JSHandle<JSHClass> newHClass = Clone(thread, jshclass);
249 JSHandle<JSHClass> JSHClass::CloneWithoutInlinedProperties(const JSThread *thread, const JSHandle<JSHClass> &jshclass)
251 return Clone(thread, jshclass, true);
283 JSHandle<JSHClass> jshclass(thread, obj->GetJSHClass());
285 JSHClass *newClass = jshclass->FindTransitions(key.GetTaggedValue(), metadata, rep);
289 newClass->SetPrototype(thread, jshclass->GetPrototype());
298 if (JSHClass::IsNeedNotifyHclassChangedForAotTransition(thread, jshclass, key.GetTaggedValue())) {
300 JSHClass::NotifyHclassChanged(thread, jshclass, newHClass, key.GetTaggedValue());
302 JSHClass::RefreshUsers(thread, jshclass, newHClass);
306 JSHClass::NotifyHclassChanged(thread, jshclass, newHClass, key.GetTaggedValue());
311 JSHandle<JSHClass> newJsHClass = JSHClass::Clone(thread, jshclass);
313 AddPropertyToNewHClass(thread, jshclass, newJsHClass, key, attr);
316 JSHClass::NotifyHclassChanged(thread, jshclass, newJsHClass, key.GetTaggedValue());
322 JSHandle<JSHClass> JSHClass::TransitionExtension(const JSThread *thread, const JSHandle<JSHClass> &jshclass)
326 auto *newClass = jshclass->FindTransitions(key.GetTaggedValue(), JSTaggedValue(0), Representation::NONE);
328 newClass->SetPrototype(thread, jshclass->GetPrototype());
334 JSHandle<JSHClass> newJsHClass = JSHClass::Clone(thread, jshclass);
345 AddExtensionTransitions(thread, jshclass, newJsHClass, key);
346 // parent is the same as jshclass, already copy
350 JSHandle<JSHClass> JSHClass::TransitionProto(const JSThread *thread, const JSHandle<JSHClass> &jshclass,
356 auto *newClass = jshclass->FindProtoTransitions(key.GetTaggedValue(), proto.GetTaggedValue());
360 newClass = FindTransitionProtoForAOT(thread, jshclass, proto);
368 JSHandle<JSHClass> newJsHClass = JSHClass::Clone(thread, jshclass);
378 // 3. Add newJsHClass to old jshclass's parent's transitions.
379 AddProtoTransitions(thread, jshclass, newJsHClass, key, proto);
381 // parent is the same as jshclass, already copy
386 JSHClass *JSHClass::FindTransitionProtoForAOT(const JSThread *thread, const JSHandle<JSHClass> &jshclass,
393 if (!jshclass->IsTS() || !baseIhc->IsTS()) {
398 JSHandle<JSTaggedValue>(jshclass),
435 JSHandle<JSHClass> JSHClass::CloneWithAddProto(const JSThread *thread, const JSHandle<JSHClass> &jshclass,
440 JSHandle<JSHClass> newJsHClass = JSHClass::Clone(thread, jshclass);
443 // 2. Add newJsHClass to old jshclass's parent's transitions.
444 AddProtoTransitions(thread, jshclass, newJsHClass, key, proto);
445 // parent is the same as jshclass, already copy
449 JSHandle<JSHClass> JSHClass::TransProtoWithoutLayout(const JSThread *thread, const JSHandle<JSHClass> &jshclass,
455 auto *newClass = jshclass->FindProtoTransitions(key.GetTaggedValue(), proto.GetTaggedValue());
461 return CloneWithAddProto(thread, jshclass, key, proto);
564 JSHandle<JSHClass> jshclass(thread, obj->GetJSHClass());
565 JSHandle<JSHClass> newJsHClass = CloneWithoutInlinedProperties(thread, jshclass);
587 JSHandle<JSHClass> jshclass(thread, obj->GetJSHClass());
588 JSHandle<JSHClass> newJsHClass = Clone(thread, jshclass, isDictionary);
848 JSHandle<JSTaggedValue> JSHClass::EnableProtoChangeMarker(const JSThread *thread, const JSHandle<JSHClass> &jshclass)
850 JSTaggedValue proto = jshclass->GetPrototype();
965 void JSHClass::RegisterOnProtoChain(const JSThread *thread, const JSHandle<JSHClass> &jshclass)
968 if (jshclass->IsJSShared()) {
971 JSHandle<JSHClass> user = jshclass;
1011 bool JSHClass::UnregisterOnProtoChain(const JSThread *thread, const JSHandle<JSHClass> &jshclass)
1013 ASSERT(jshclass->IsPrototype());
1014 if (!jshclass->GetProtoChangeDetails().IsProtoChangeDetails()) {
1017 if (!jshclass->GetPrototype().IsECMAObject()) {
1019 ProtoChangeDetails::Cast(jshclass->GetProtoChangeDetails().GetTaggedObject())->GetChangeListener();
1022 JSHandle<ProtoChangeDetails> currentDetails = GetProtoChangeDetails(thread, jshclass);
1027 JSTaggedValue proto = jshclass->GetPrototype();
1037 ASSERT(listeners->Get(index) == jshclass.GetTaggedValue());
1042 JSHandle<ProtoChangeDetails> JSHClass::GetProtoChangeDetails(const JSThread *thread, const JSHandle<JSHClass> &jshclass)
1044 JSTaggedValue protoDetails = jshclass->GetProtoChangeDetails();
1049 jshclass->SetProtoChangeDetails(thread, protoDetailsHandle.GetTaggedValue());
1055 JSHandle<JSHClass> jshclass(thread, obj->GetJSHClass());
1056 return GetProtoChangeDetails(thread, jshclass);
1059 void JSHClass::MarkProtoChanged([[maybe_unused]] const JSThread *thread, const JSHandle<JSHClass> &jshclass)
1062 ASSERT(jshclass->IsPrototype());
1063 JSTaggedValue markerValue = jshclass->GetProtoChangeMarker();
1070 void JSHClass::NoticeThroughChain(const JSThread *thread, const JSHandle<JSHClass> &jshclass,
1074 MarkProtoChanged(thread, jshclass);
1075 JSTaggedValue protoDetailsValue = jshclass->GetProtoChangeDetails();