The synchronization here is not actually necessary since the
variable accessor has already been allocated and the object's
monitor has already been acquired (both in getObjectId, the sole
caller of initObjectId). This synchronization caused global
bottlenecks against a given class, since it synchronized against
the VariableTableManager instance from that class. Since it's
likely that if user code acquires an object_id from one instance
of a class, it will acquire object_id from all instances of the
class...this quickly ran into multithreaded contention.
I opted to remove the synchronization, because I believe it is
safe, and modified initObjectId's visibility to be private so it
won't mistakenly be called by external code.