view src/share/vm/gc_implementation/shenandoah/vm_operations_shenandoah.hpp @ 7439:21d3b0133d61

Several fixes: make full-gc use the reference-pending lock, clean up when shutting down the Shenandoah thread. Added write barrier to static_field_addr().
author Roman Kennke <rkennke@redhat.com>
date Wed, 10 Dec 2014 17:18:53 +0100
parents eff161553fd8
children
line wrap: on
line source

/*
Copyright 2014 Red Hat, Inc. and/or its affiliates.
 */
#ifndef SHARE_VM_GC_IMPLEMENTATION_SHENANDOAH_VM_OPERATIONS_SHENANDOAH_HPP
#define SHARE_VM_GC_IMPLEMENTATION_SHENANDOAH_VM_OPERATIONS_SHENANDOAH_HPP

#include "gc_implementation/shenandoah/shenandoahConcurrentMark.hpp"
#include "gc_implementation/shared/vmGCOperations.hpp"

// VM_operations for the Shenandoah Collector.
// For now we are just doing two pauses.  The initial marking pause, and the final finish up marking and perform evacuation pause.
//    VM_ShenandoahInitMark
//    VM_ShenandoahFinishMark

class VM_ShenandoahInitMark: public VM_Operation {
  
public:
  virtual VMOp_Type type() const;
  virtual void doit();

  virtual const char* name() const;
};

class VM_ShenandoahReferenceOperation : public VM_Operation {
  bool doit_prologue();
  void doit_epilogue();

};

class VM_ShenandoahFinishMark: public VM_ShenandoahReferenceOperation {

 public:
  VMOp_Type type() const;
  void doit();
  const char* name() const;

};

class VM_ShenandoahStartEvacuation: public VM_Operation {

 public:
  VMOp_Type type() const;
  void doit();
  const char* name() const;

};

class VM_ShenandoahFinishEvacuation: public VM_Operation {

 public:
  VMOp_Type type() const;
  void doit();
  const char* name() const;

};

class VM_ShenandoahFullGC : public VM_ShenandoahReferenceOperation {
 public:
  VMOp_Type type() const;
  void doit();
  const char* name() const;
};

class VM_ShenandoahVerifyHeapAfterEvacuation: public VM_Operation {

 public:
  virtual VMOp_Type type() const;
  virtual void doit();

  virtual const char* name() const;

};

class VM_ShenandoahEvacuation: public VM_Operation {

 public:
  virtual VMOp_Type type() const;
  virtual void doit();

  virtual const char* name() const;

};

/*
class VM_ShenandoahVerifyHeapAfterUpdateRefs: public VM_Operation {

 public:
  virtual VMOp_Type type() const;
  virtual void doit();

  virtual const char* name() const;

};
*/
class VM_ShenandoahUpdateRootRefs: public VM_Operation {

 public:
  virtual VMOp_Type type() const;
  virtual void doit();

  virtual const char* name() const;

};

class VM_ShenandoahUpdateRefs: public VM_Operation {

 public:
  virtual VMOp_Type type() const;
  virtual void doit();

  virtual const char* name() const;

};

#endif //SHARE_VM_GC_IMPLEMENTATION_SHENANDOAH_VM_OPERATIONS_SHENANDOAH_HPP