31 *
32 * A height of subtree defined by this node is kept in the node.
33 * Additionaly, a byte array is used to control how much memory
34 * this node will occupy.
35 */
36 public final class TreeNode {
37 private TreeNode left, right;
38 // The height of the tree
39 private int height;
40 private int size;
41 private Object storage;
42
43
44 /**
45 * Create a tree node that will occupy approximately given memory.
46 *
47 * @param memory memory
48 */
49 public TreeNode(long memory) {
50 int length = (int) (memory - (4 * 2 + 2 * Memory.getReferenceSize() + Memory.getObjectExtraSize()));
51 if (length > 0)
52 storage = new byte[length];
53 size = length;
54 }
55
56 /**
57 * Create a tree node that will occupy approximately given memory.
58 *
59 * @param memory memory
60 */
61 public TreeNode(long size, GarbageProducer gp) {
62 int length = (int) (size - (4 * 2 + 2 * Memory.getReferenceSize() + Memory.getObjectExtraSize()));
63 if (length > 0)
64 storage = gp.create(length);
65 size = length;
66 }
67 /**
68 * Create a tree node that will occupy approximately given memory
69 * with given left and right children.
70 *
71 * @param memory memory
72 * @param left left child
73 * @param right right child
|
31 *
32 * A height of subtree defined by this node is kept in the node.
33 * Additionaly, a byte array is used to control how much memory
34 * this node will occupy.
35 */
36 public final class TreeNode {
37 private TreeNode left, right;
38 // The height of the tree
39 private int height;
40 private int size;
41 private Object storage;
42
43
44 /**
45 * Create a tree node that will occupy approximately given memory.
46 *
47 * @param memory memory
48 */
49 public TreeNode(long memory) {
50 int length = (int) (memory - (4 * 2 + 2 * Memory.getReferenceSize() + Memory.getObjectExtraSize()));
51 size = length;
52 if (length <= 0) {
53 return;
54 }
55 if (Memory.isValhallaEnabled()) {
56 storage = new Integer[Memory.getArrayLength(memory, Memory.getIntegerArrayElementSize())];
57 } else {
58 storage = new int[Memory.getArrayLength(memory, Memory.getIntSize())];
59 }
60 }
61
62 /**
63 * Create a tree node that will occupy approximately given memory.
64 *
65 * @param memory memory
66 */
67 public TreeNode(long size, GarbageProducer gp) {
68 int length = (int) (size - (4 * 2 + 2 * Memory.getReferenceSize() + Memory.getObjectExtraSize()));
69 if (length > 0)
70 storage = gp.create(length);
71 size = length;
72 }
73 /**
74 * Create a tree node that will occupy approximately given memory
75 * with given left and right children.
76 *
77 * @param memory memory
78 * @param left left child
79 * @param right right child
|