MCPcopy Create free account
hub / github.com/ReadyTalk/avian / updateBootstrapClass

Function updateBootstrapClass

src/machine.cpp:2871–2901  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2869}
2870
2871void updateBootstrapClass(Thread* t, GcClass* bootstrapClass, GcClass* class_)
2872{
2873 expect(t, bootstrapClass != class_);
2874
2875 // verify that the classes have the same layout
2876 expect(t, bootstrapClass->super() == class_->super());
2877
2878 expect(t, bootstrapClass->fixedSize() >= class_->fixedSize());
2879
2880 expect(t, (class_->vmFlags() & HasFinalizerFlag) == 0);
2881
2882 PROTECT(t, bootstrapClass);
2883 PROTECT(t, class_);
2884
2885 ENTER(t, Thread::ExclusiveState);
2886
2887 bootstrapClass->vmFlags() &= ~BootstrapFlag;
2888 bootstrapClass->vmFlags() |= class_->vmFlags();
2889 bootstrapClass->flags() |= class_->flags();
2890
2891 bootstrapClass->setArrayElementClass(t, class_->arrayElementClass());
2892 bootstrapClass->setSuper(t, class_->super());
2893 bootstrapClass->setInterfaceTable(t, class_->interfaceTable());
2894 bootstrapClass->setVirtualTable(t, class_->virtualTable());
2895 bootstrapClass->setFieldTable(t, class_->fieldTable());
2896 bootstrapClass->setMethodTable(t, class_->methodTable());
2897 bootstrapClass->setStaticTable(t, class_->staticTable());
2898 bootstrapClass->setAddendum(t, class_->addendum());
2899
2900 updateClassTables(t, bootstrapClass, class_);
2901}
2902
2903GcClass* makeArrayClass(Thread* t,
2904 GcClassLoader* loader,

Callers 1

resolveSystemClassFunction · 0.85

Calls 4

expectFunction · 0.85
updateClassTablesFunction · 0.85
flagsMethod · 0.80
setSuperMethod · 0.80

Tested by

no test coverage detected