< prev index next >

test/hotspot/gtest/oops/test_markOop.cpp

Print this page




  81 
  82 TEST_VM(markWord, printing) {
  83   JavaThread* THREAD = JavaThread::current();
  84   ThreadInVMfromNative invm(THREAD);
  85   ResourceMark rm(THREAD);
  86 
  87   oop obj = SystemDictionary::Byte_klass()->allocate_instance(THREAD);
  88 
  89   FlagSetting fs(WizardMode, true);
  90   FlagSetting bf(UseBiasedLocking, true);
  91 
  92   HandleMark hm(THREAD);
  93   Handle h_obj(THREAD, obj);
  94 
  95   // Biased locking is initially enabled for this java.lang.Byte object.
  96   assert_test_pattern(h_obj, "is_biased");
  97 
  98   // Lock using biased locking.
  99   BasicObjectLock lock;
 100   lock.set_obj(obj);
 101   markWord mark = obj->mark().incr_bias_epoch();
 102   obj->set_mark(mark);
 103   ObjectSynchronizer::fast_enter(h_obj, lock.lock(), true, THREAD);

 104   // Look for the biased_locker in markWord, not prototype_header.
 105 #ifdef _LP64
 106   assert_not_test_pattern(h_obj, "mark(is_biased biased_locker=0x0000000000000000");
 107 #else
 108   assert_not_test_pattern(h_obj, "mark(is_biased biased_locker=0x00000000");
 109 #endif
 110 
 111   // Same thread tries to lock it again.
 112   {
 113     ObjectLocker ol(h_obj, THREAD);
 114     assert_test_pattern(h_obj, "locked");
 115   }
 116 
 117   // This is no longer biased, because ObjectLocker revokes the bias.
 118   assert_test_pattern(h_obj, "is_neutral no_hash");
 119 
 120   // Wait gets the lock inflated.
 121   {
 122     ObjectLocker ol(h_obj, THREAD);
 123 




  81 
  82 TEST_VM(markWord, printing) {
  83   JavaThread* THREAD = JavaThread::current();
  84   ThreadInVMfromNative invm(THREAD);
  85   ResourceMark rm(THREAD);
  86 
  87   oop obj = SystemDictionary::Byte_klass()->allocate_instance(THREAD);
  88 
  89   FlagSetting fs(WizardMode, true);
  90   FlagSetting bf(UseBiasedLocking, true);
  91 
  92   HandleMark hm(THREAD);
  93   Handle h_obj(THREAD, obj);
  94 
  95   // Biased locking is initially enabled for this java.lang.Byte object.
  96   assert_test_pattern(h_obj, "is_biased");
  97 
  98   // Lock using biased locking.
  99   BasicObjectLock lock;
 100   lock.set_obj(obj);
 101   markWord prototype_header = obj->klass()->prototype_header();
 102   markWord mark = obj->mark();
 103   markWord biased_mark = markWord::encode((JavaThread*) THREAD, mark.age(), prototype_header.bias_epoch());
 104   obj->set_mark(biased_mark);
 105   // Look for the biased_locker in markWord, not prototype_header.
 106 #ifdef _LP64
 107   assert_not_test_pattern(h_obj, "mark(is_biased biased_locker=0x0000000000000000");
 108 #else
 109   assert_not_test_pattern(h_obj, "mark(is_biased biased_locker=0x00000000");
 110 #endif
 111 
 112   // Same thread tries to lock it again.
 113   {
 114     ObjectLocker ol(h_obj, THREAD);
 115     assert_test_pattern(h_obj, "locked");
 116   }
 117 
 118   // This is no longer biased, because ObjectLocker revokes the bias.
 119   assert_test_pattern(h_obj, "is_neutral no_hash");
 120 
 121   // Wait gets the lock inflated.
 122   {
 123     ObjectLocker ol(h_obj, THREAD);
 124 


< prev index next >