Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: Allocator/FreeMemManager.java


1   // FreeMemManager.java, created Mon Nov 25  6:16:24 2002 by laudney
2   // Copyright (C) 2001-3 laudney <laudney@acm.org>
3   // Licensed under the terms of the GNU LGPL; see COPYING for details.
4   package Allocator;
5   
6   import Memory.Address;
7   
8   /**
9    * FreeMemManager
10   *
11   * @author laudney <laudney@acm.org>
12   * @version $Id: FreeMemManager.java,v 1.9 2003/05/12 10:04:52 joewhaley Exp $
13   */
14  public class FreeMemManager {
15      private static FreeMemStrategy defaultStrategy = new BestFitStrategy();
16      private static FreeMemStrategy strategy = defaultStrategy;
17  
18      public static void setFreeMemStrategy(FreeMemStrategy stg) {
19          strategy = stg;
20      }
21  
22      public static void addFreeMem(MemUnit unit) {
23          strategy.addFreeMem(unit);
24      }
25  
26      public static Address getFreeMem(int size) {
27          MemUnit unit = strategy.getFreeMem(size);
28          if (unit == null) {
29              return null;
30          } else {
31              Address addr = unit.getHead().offset(size);
32              int byteLength = unit.getByteLength() - size;
33              if (byteLength > 0) {
34                  strategy.addFreeMem(new MemUnit(addr, byteLength));
35              }
36              return addr;
37          }
38      }
39  }