Commit 1b187f67a4431395d3deec49cdbac802aff8a5eb

  • avatar
  • Loïc Rouchon <loic @loic-d…ktop.(none)>
  • Wed Feb 03 08:53:52 CET 2010
  • Tree SHA1: 9a54b11
  • Parent SHA1: 106e024 (Merge branch 'master' of http://git.gitorious.org/+jnode-new-gc-algo-developers/jnode/new-gc-algorithms)
  • raw diff | raw patch
Now able to boot again
  
192192 * mark&sweep).
193193 */
194194 final void majorGC() {
195 final long beginTime= GenGCStatistics.currentMillis();
195 final long beginTime = GenGCStatistics.currentMillis();
196196 Unsafe.debug("\n[Enter] GenGCManager.majorGC()\n");
197197 // Prepare
198198 final VmBootHeap bootHeap = heapManager.getBootHeap();
  
7474 }
7575
7676 private String addString(String property, long value, String unit) {
77 return property + ": " + value + " " + unit;
77 return property + ": " + value + " " + unit + "\n";
7878 }
7979
8080 private long getOverhead() {
  
180180 manager.majorGC();
181181 runMinorNeeded = false;
182182 } else {
183 Unsafe.debug("GenGCThread.callGc(major)\n");
183 Unsafe.debug("GenGCThread.callGc(minor)\n");
184184 manager.minorGC();
185185 runMinorNeeded = false;
186186 }
  
4747 private final static long youngSpaceTimerTrigger = 2000L;
4848 private final static long tenuredSpaceTimerTrigger = 60000L;
4949 private final static long sweepTimerTrigger = 5000L;
50 private final static int youngSpaceCounterTrigger = 2000;
51 private final static int tenuredSpaceCounterTrigger = 25000;
52 private final static int sweepCounterTrigger = 10000;
50 private final static int youngSpaceCounterTrigger = 100000;
51 private final static int tenuredSpaceCounterTrigger = 250000;
52 private final static int sweepCounterTrigger = 200000;
5353
5454 /**
5555 * The GC thread
106106 intializeGCYoungSpaceTriggers();
107107 intializeGCTenuredSpaceTriggers();
108108 intializeGCSweepTriggers();
109
110 enableGCTriggers();
109 disableGCTriggers();
111110 }
112111
113112 public void check() {
116116 }
117117
118118 public void enableGCTriggers() {
119 gcYoungSpaceCurrentTrigger = gcYoungSpaceRealTrigger;
119 // gcYoungSpaceCurrentTrigger = gcYoungSpaceRealTrigger;
120120 gcTenuredSpaceCurrentTrigger = gcTenuredSpaceRealTrigger;
121121 gcSweepCurrentTrigger = gcSweepRealTrigger;
122122 reset();
  
4343import org.jnode.vm.scheduler.VmProcessor;
4444import org.vmmagic.unboxed.Address;
4545import org.vmmagic.unboxed.Extent;
46import org.vmmagic.unboxed.ObjectReference;
4746import org.vmmagic.unboxed.Word;
4847
4948/**
113113
114114 private boolean gcActive;
115115
116 private boolean gcManagerLoaded = false;
117
116118 /**
117119 * Make this private, so we cannot be instantiated
118120 */
153153
154154 final boolean traceTriggers = (heapFlags & TRACE_TRIGGER) != 0;
155155 triggerManager.initialize(gcThread, gcSweepThread, traceTriggers);
156 triggerManager.enableGCTriggers();
157 gcManagerLoaded = true;
156158 Unsafe.debug("GenHeapManager.start(ended)\n");
157159 }
158160
475475 // Allocated objects are initially black.
476476 VmMagic.setObjectFlags(result, Word.fromIntZeroExtend(ObjectFlags.GC_DEFAULT_COLOR));
477477 //add object to young objects
478 if (gcManager != null) {
478 if (gcManagerLoaded) {
479 // Unsafe.debug("GenHeapManager.allocObject(young)\n");
479480 gcManager.addToYoungObjects(result);
480 }
481 else {
481 } else {
482 // Unsafe.debug("GenHeapManager.allocObject(old)\n");
482483 helper.setOld(result);
483484 }
485 // Unsafe.debug("GenHeapManager.allocObject(done)\n");
484486
485487 } finally {
486488 if (m != null) {
502502 * @return The heap
503503 */
504504 private VmDefaultHeap allocHeap(Extent size, boolean addToHeapList) {
505 Unsafe.debug("[begin] allocHeap\n");
505 // Unsafe.debug("[begin] allocHeap\n");
506506 final Address start = helper.allocateBlock(size);
507507 // final Address start = MemoryBlockManager.allocateBlock(size);
508508 if (start == null) {
517517 if (addToHeapList) {
518518 heapList.append(heap);
519519 }
520 Unsafe.debug("[end successful] allocHeap\n");
520 // Unsafe.debug("[end successful] allocHeap\n");
521521 return heap;
522522 }
523523
  
9898 * @param slotSize
9999 */
100100 protected final void initializeAbstract(int slotSize) {
101 this.headerSize = ObjectLayout.HEADER_SLOTS * slotSize;
101 this.headerSize = (ObjectLayout.HEADER_SLOTS + 3) * slotSize;
102102 this.flagsOffset = Offset.fromIntSignExtend(ObjectLayout.FLAGS_SLOT * slotSize);
103103 this.tibOffset = Offset.fromIntSignExtend(ObjectLayout.TIB_SLOT * slotSize);
104104 this.ageOffset = Offset.fromIntSignExtend(ObjectLayout.COLLECTION_AGE_SLOT * slotSize);
  
2323import org.jnode.annotation.Inline;
2424import org.jnode.annotation.MagicPermission;
2525import org.jnode.vm.ObjectVisitor;
26import org.jnode.vm.Unsafe;
2726import org.jnode.vm.VmMagic;
2827import org.jnode.vm.classmgr.ObjectFlags;
2928import org.jnode.vm.classmgr.ObjectLayout;
107107 final Offset sizeOffset = Offset
108108 .fromIntSignExtend(-((ObjectLayout.HEADER_SLOTS + 1) * slotSize));
109109 final Offset flagsOffset = Offset.fromIntSignExtend(ObjectLayout.FLAGS_SLOT * slotSize);
110 final Offset ageOffset = Offset.fromIntSignExtend(ObjectLayout.COLLECTION_AGE_SLOT * slotSize);
110 final Offset ageOffset = Offset.fromIntSignExtend(ObjectLayout.COLLECTION_AGE_SLOT
111 * slotSize);
111112 final Offset nbRefOffset = Offset.fromIntSignExtend(ObjectLayout.NB_REFS_SLOT * slotSize);
112113
113114 // Setup a heap object, so the heap can initialize itself.