hotspot/src/share/vm/interpreter/rewriter.cpp
changeset 3273 6acf7084b1d3
parent 2570 ecc7862946d4
child 4429 d7eb4e2099aa
equal deleted inserted replaced
3271:4c3a294df59b 3273:6acf7084b1d3
   271 
   271 
   272   // determine index maps for methodOop rewriting
   272   // determine index maps for methodOop rewriting
   273   compute_index_maps();
   273   compute_index_maps();
   274 
   274 
   275   if (RegisterFinalizersAtInit && _klass->name() == vmSymbols::java_lang_Object()) {
   275   if (RegisterFinalizersAtInit && _klass->name() == vmSymbols::java_lang_Object()) {
       
   276     bool did_rewrite = false;
   276     int i = _methods->length();
   277     int i = _methods->length();
   277     while (i-- > 0) {
   278     while (i-- > 0) {
   278       methodOop method = (methodOop)_methods->obj_at(i);
   279       methodOop method = (methodOop)_methods->obj_at(i);
   279       if (method->intrinsic_id() == vmIntrinsics::_Object_init) {
   280       if (method->intrinsic_id() == vmIntrinsics::_Object_init) {
   280         // rewrite the return bytecodes of Object.<init> to register the
   281         // rewrite the return bytecodes of Object.<init> to register the
   281         // object for finalization if needed.
   282         // object for finalization if needed.
   282         methodHandle m(THREAD, method);
   283         methodHandle m(THREAD, method);
   283         rewrite_Object_init(m, CHECK);
   284         rewrite_Object_init(m, CHECK);
       
   285         did_rewrite = true;
   284         break;
   286         break;
   285       }
   287       }
   286     }
   288     }
       
   289     assert(did_rewrite, "must find Object::<init> to rewrite it");
   287   }
   290   }
   288 
   291 
   289   // rewrite methods, in two passes
   292   // rewrite methods, in two passes
   290   int i, len = _methods->length();
   293   int i, len = _methods->length();
   291 
   294