コード例 #1
0
ファイル: data_heap_checker.cpp プロジェクト: dch/factor
  void operator()(cell* slot_ptr) {
    if (immediate_p(*slot_ptr))
      return;

    generation target = generation_of(parent, untag<object>(*slot_ptr));
    if (gen == aging_generation && target == nursery_generation) {
      check_write_barrier(slot_ptr, target, card_points_to_nursery);
    } else if (gen == tenured_generation) {
      if (target == nursery_generation) {
        check_write_barrier(slot_ptr, target, card_points_to_nursery);
      } else if (target == aging_generation) {
        check_write_barrier(slot_ptr, target, card_points_to_aging);
      }
    }
  }
コード例 #2
0
	void operator()(cell *slot_ptr)
	{
		if(!immediate_p(*slot_ptr))
		{
			generation target = generation_of(parent,untag<object>(*slot_ptr));
			switch(gen)
			{
			case nursery_generation:
				break;
			case aging_generation:
				if(target == nursery_generation)
					check_write_barrier(slot_ptr,target,card_points_to_nursery);
				break;
			case tenured_generation:
				if(target == nursery_generation)
					check_write_barrier(slot_ptr,target,card_points_to_nursery);
				else if(target == aging_generation)
					check_write_barrier(slot_ptr,target,card_points_to_aging);
				break;
			}
		}
	}