|
J avolution v5.4 (J2SE 1.6+) | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjavolution.context.Context
javolution.context.AllocatorContext
javolution.context.StackContext
public abstract class StackContext
This class represents a stack allocator context
;
(using thread-local pools or RTSJ ScopedMemory
).
Stacks allocations reduce heap memory allocation and often result in faster execution time for almost all objects but the smallest one.
Stack allocated objects should never be assigned to static members
(see ImmortalContext
). Also, methods entering/exiting stack
contexts should ensure that stack allocated objects do not escape from
their context scope. If necessary, stack objects can be exported using
AllocatorContext.outerExecute(java.lang.Runnable)
or AllocatorContext.outerCopy(T)
:
public class LargeInteger implements ValueType, Realtime {
public LargeInteger sqrt() {
StackContext.enter();
try {
LargeInteger result = ZERO;
LargeInteger k = this.shiftRight(this.bitLength() / 2)); // First approximation.
while (true) { // Newton Iteration.
result = (k.plus(this.divide(k))).shiftRight(1);
if (result.equals(k)) return StackContext.outerCopy(result); // Exports result.
k = result;
}
} finally {
StackContext.exit();
}
}
}
Nested Class Summary |
---|
Nested classes/interfaces inherited from class javolution.context.AllocatorContext |
---|
AllocatorContext.Reference<T> |
Field Summary | |
---|---|
static Configurable<java.lang.Class<? extends StackContext>> |
DEFAULT
Holds the default implementation. |
Fields inherited from class javolution.context.Context |
---|
ROOT |
Constructor Summary | |
---|---|
StackContext()
|
Method Summary | |
---|---|
static void |
enter()
Enters the DEFAULT stack context. |
static void |
enter(boolean condition)
Enters a stack context only if the specified condition is verified. |
static void |
exit()
Exits the current stack context. |
static void |
exit(boolean condition)
Exits a stack context only if the specified condition is verified. |
Methods inherited from class javolution.context.AllocatorContext |
---|
deactivate, getAllocator, getCurrent, getDefault, outerCopy, outerCopy, outerExecute |
Methods inherited from class javolution.context.Context |
---|
enter, enter, enterAction, exit, exit, exitAction, getOuter, getOwner, setCurrent, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final Configurable<java.lang.Class<? extends StackContext>> DEFAULT
ScopedMemory
for their stack allocations.
Users may also disable stack allocation by providing a class allocating
on the heap.
Constructor Detail |
---|
public StackContext()
Method Detail |
---|
public static void enter()
DEFAULT
stack context.
public static void enter(boolean condition)
condition
- true
to enter a stack context;
false
otherwise.public static void exit()
java.lang.ClassCastException
- if the context is not a stack context.public static void exit(boolean condition)
condition
- true
to exit a stack context;
false
otherwise.
|
J avolution v5.4 (J2SE 1.6+) | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |