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 }