aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/natClass.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/natClass.cc')
-rw-r--r--libjava/java/lang/natClass.cc11
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
{