Top


定義場所(file name)

hotspot/src/share/vm/runtime/sharedRuntime.cpp

説明(description)

// G1 write-barrier pre: executed before a pointer store.

名前(function name)

JRT_LEAF(void, SharedRuntime::g1_wb_pre(oopDesc* orig, JavaThread *thread))

本体部(body)

  {- -------------------------------------------
  (1) もし書き換え前の値(= orig 引数の値)が NULL であれば, 
      記録する価値はないので, ここでリターン.

      (assert にもあるように, 本来はここに来る前にチェックされている条件だが, 念のためここでもチェックしている模様)
      ---------------------------------------- -}

      if (orig == NULL) {
        assert(false, "should be optimized out");
        return;
      }

  {- -------------------------------------------
  (1) (assert)
      ---------------------------------------- -}

      assert(orig->is_oop(true /* ignore mark word */), "Error");

  {- -------------------------------------------
  (1) PtrQueue::enqueue() を呼んで, 
      書き換え前の値(= orig 引数の値)をキューに追加する.
      ---------------------------------------- -}

      // store the original value that was in the field reference
      thread->satb_mark_queue().enqueue(orig);
    JRT_END

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.