151 Array<Method*>* class_methods, |
151 Array<Method*>* class_methods, |
152 Array<Method*>* default_methods, |
152 Array<Method*>* default_methods, |
153 Array<Klass*>* local_interfaces); |
153 Array<Klass*>* local_interfaces); |
154 void verify_against(outputStream* st, klassVtable* vt, int index); |
154 void verify_against(outputStream* st, klassVtable* vt, int index); |
155 inline InstanceKlass* ik() const; |
155 inline InstanceKlass* ik() const; |
|
156 // When loading a class from CDS archive at run time, and no class redefintion |
|
157 // has happened, it is expected that the class's itable/vtables are |
|
158 // laid out exactly the same way as they had been during dump time. |
|
159 // Therefore, in klassVtable::initialize_[iv]table, we do not layout the |
|
160 // tables again. Instead, we only rerun the process to create/check |
|
161 // the class loader constraints. In non-product builds, we add asserts to |
|
162 // guarantee that the table's layout would be the same as at dump time. |
|
163 // |
|
164 // If JVMTI redefines any class, the read-only shared memory are remapped |
|
165 // as read-write. A shared class' vtable/itable are re-initialized and |
|
166 // might have different layout due to class redefinition of the shared class |
|
167 // or its super types. |
|
168 bool is_preinitialized_vtable(); |
156 }; |
169 }; |
157 |
170 |
158 |
171 |
159 // private helper class for klassVtable |
172 // private helper class for klassVtable |
160 // description of entry points: |
173 // description of entry points: |