diff options
Diffstat (limited to 'libjava/java/lang/natClass.cc')
-rw-r--r-- | libjava/java/lang/natClass.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 768ced6..0960649 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -758,9 +758,6 @@ java::lang::Class::initializeClass (void) } } - if (state <= JV_STATE_LINKED) - _Jv_PrepareConstantTimeTables (this); - // Step 2. java::lang::Thread *self = java::lang::Thread::currentThread(); // FIXME: `self' can be null at startup. Hence this nasty trick. @@ -805,6 +802,14 @@ java::lang::Class::initializeClass (void) } } + _Jv_PrepareConstantTimeTables (this); + + if (vtable == NULL) + _Jv_MakeVTable(this); + + if (otable != NULL && otable->state == 0) + _Jv_LinkOffsetTable(this); + // Steps 8, 9, 10, 11. try { |