| 2869 | } |
| 2870 | |
| 2871 | void 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 | |
| 2903 | GcClass* makeArrayClass(Thread* t, |
| 2904 | GcClassLoader* loader, |
no test coverage detected