Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.mozilla.javascript
Class ClassCache

    java.lang.Object
      org.mozilla.javascript.ClassCache

public class ClassCache
extends java.lang.Object

Cache of generated classes and data structures to access Java runtime from JavaScript.

Since:
  Rhino 1.5 Release 5
Author:
  Igor Bukanov

Constructor Summary
`ClassCache()`

Method Summary
`boolean` | `associate(ScriptableObject topScope)` Associate ClassCache object with the given top-level scope.
`void` | `clearCaches()` Empty caches of generated Java classes and Java reflection information.
`static ClassCache` | `get(Scriptable scope)` Search for ClassCache object in the given scope.
`boolean` | `isCachingEnabled()` Check if generated Java classes and Java reflection information is cached.
`boolean` | `isInvokerOptimizationEnabled()`
`int` | `newClassSerialNumber()` Internal engine method to return serial number for generated classes to ensure name uniqueness.
`void` | `setCachingEnabled(boolean enabled)` Set whether to cache some values.
`void` | `setInvokerOptimizationEnabled(boolean enabled)` Control if invocation of Java methods in subclasses of `ScriptableObject` through reflection should be replaced by direct calls to invoker code generated at runtime.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ClassCache

    public ClassCache()

Method Detail

### get

    public static ClassCache get(Scriptable scope)

  Search for ClassCache object in the given scope. The method first calls `ScriptableObject.getTopLevelScope(Scriptable scope)` to get the top most scope and then tries to locate associated ClassCache object in the prototype chain of the top scope.

  Parameters:
    `scope` - scope to search for ClassCache object.
  Returns:
    previously associated ClassCache object or a new instance of ClassCache if no ClassCache object was found.
  See Also:
    `associate(ScriptableObject topScope)`

### associate

    public boolean associate(ScriptableObject topScope)

  Associate ClassCache object with the given top-level scope. The ClassCache object can only be associated with the given scope once.

  Parameters:
    `topScope` - scope to associate this ClassCache object with.
  Returns:
    true if no prevous ClassCache objects were embedded into the scope and this ClassCache were successfully associated or false otherwise.
  See Also:
    `get(Scriptable scope)`

### clearCaches

    public void clearCaches()

  Empty caches of generated Java classes and Java reflection information.

### isCachingEnabled

    public final boolean isCachingEnabled()

  Check if generated Java classes and Java reflection information is cached.

### setCachingEnabled

    public void setCachingEnabled(boolean enabled)

  Set whether to cache some values.

  By default, the engine will cache the results of `Class.getMethods()` and similar calls. This can speed execution dramatically, but increases the memory footprint. Also, with caching enabled, references may be held to objects past the lifetime of any real usage.

  If caching is enabled and this method is called with a `false` argument, the caches will be emptied.

  Caching is enabled by default.

  Parameters:
    `enabled` - if true, caching is enabled
  See Also:
    `clearCaches()`

### isInvokerOptimizationEnabled

    public boolean isInvokerOptimizationEnabled()

  See Also:
    `setInvokerOptimizationEnabled(boolean enabled)`

### setInvokerOptimizationEnabled

    public void setInvokerOptimizationEnabled(boolean enabled)

  Control if invocation of Java methods in subclasses of `ScriptableObject` through reflection should be replaced by direct calls to invoker code generated at runtime. On many JVMs cost of calling Java method through reflection can be reduced significantly if a special invoker classes are generated at runtime to call the Java methods directly. For example, under JDK 1.3.1 on Linux the reflection calls can be speedup by 10-15 times. On JDK 1.4.2 the the speedup can reach the factor of 1.5-2.

  The drawback of the optimization is increased memory consumption and longer runtime initialization since class generating and loading is slow. In addition the current implementation assumes that the classes under optimization are reachable through `Context.getApplicationClassLoader()` which may not be feasible to implement.

  By default the optimization is disabled.

  Parameters:
    `enabled` - if true enable invoker optimization or if false disable it and clear all cached generated classes.
  See Also:
    `isInvokerOptimizationEnabled()`

### newClassSerialNumber

    public final int newClassSerialNumber()

  Internal engine method to return serial number for generated classes to ensure name uniqueness.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD