Package org.eclipse.m2m.atl.emftvm.impl

## Class ExecEnvImpl

- java.lang.Object
- - org.eclipse.emf.common.notify.impl.BasicNotifierImpl
  - - org.eclipse.emf.ecore.impl.BasicEObjectImpl
    - - org.eclipse.emf.ecore.impl.EObjectImpl
      - - org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl

All Implemented Interfaces:
  `org.eclipse.emf.common.notify.Notifier`, `org.eclipse.emf.ecore.EObject`, `org.eclipse.emf.ecore.InternalEObject`, `ExecEnv`

    public class ExecEnvImpl
    extends org.eclipse.emf.ecore.impl.EObjectImpl
    implements ExecEnv

An implementation of the model object 'Exec Env'.

### Nested Class Summary

### Nested classes/interfaces inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl

`org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolder, org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolderBaseImpl, org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolderImpl`

### Nested classes/interfaces inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl

`org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EAdapterList<E extends java.lang.Object & org.eclipse.emf.common.notify.Adapter>, org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EObservableAdapterList, org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EScannableAdapterList`

### Nested classes/interfaces inherited from interface org.eclipse.emf.ecore.InternalEObject

`org.eclipse.emf.ecore.InternalEObject.EStore`

### Field Summary

Fields
`protected Validator<CodeBlock>` `cbStackValidator` Code block stack level validator.
`protected static RuleMode` `CURRENT_PHASE_EDEFAULT` The default value of the '`Current Phase`' attribute.
`protected RuleMode` `currentPhase` The cached value of the '`Current Phase`' attribute.
`protected java.util.Map<org.eclipse.emf.ecore.EObject,​org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.DeletionEntry>` `deletionQueue` Queue of elements to be deleted, along with the `StackFrame` context in which the deletion takes place.
`protected FieldContainer` `fieldContainer` Field storage and lookup.
`protected org.eclipse.emf.common.util.EList<Operation>` `initChain` The chain of '`init()`' operations to be executed before the automatic rules.
`protected java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Model>` `inoutModelOf` Lookup table of (resource -> model).
`protected java.util.Map<java.lang.String,​Model>` `inoutModels` The cached value of the '`Inout Models`' attribute.
`protected java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Model>` `inputModelOf` Lookup table of (resource -> model).
`protected java.util.Map<java.lang.String,​Model>` `inputModels` The cached value of the '`Input Models`' attribute.
`protected Validator<Instruction>` `instrStackValidator` Instruction stack level validator.
`protected java.util.Map<java.lang.String,​Model>` `internalInoutModels` The internal value of the '`Inout Models`' attribute.
`protected java.util.Map<java.lang.String,​Model>` `internalInputModels` The internal value of the '`Input Models`' attribute.
`protected java.util.Map<java.lang.String,​Metamodel>` `internalMetaModels` The internal value of the '`Meta Models`' attribute.
`protected java.util.Map<java.lang.String,​Module>` `internalModules` The internal value of the '`Modules`' attribute.
`protected java.util.Map<java.lang.String,​Model>` `internalOutputModels` The internal value of the '`Output Models`' attribute.
`protected static boolean` `JIT_DISABLED_EDEFAULT` The default value of the '`Jit Disabled`' attribute.
`protected boolean` `jitDisabled` The cached value of the '`Jit Disabled`' attribute.
`protected java.util.Set<java.lang.String>` `loadedModules` Set of modules that have effectively been loaded.
`protected org.eclipse.emf.common.util.EList<Operation>` `mainChain` The chain of '`main()`' operations to be executed after the automatic rules.
`protected TraceLinkSet` `matches` The cached value of the '`Matches`' reference.
`protected java.util.Map<Metamodel,​java.lang.String>` `metaModelId` Lookup table of (metamodel -> ID).
`protected java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Metamodel>` `metaModelOf` Lookup table of (resource -> metamodel).
`protected java.util.Map<java.lang.String,​Metamodel>` `metaModels` The cached value of the '`Meta Models`' attribute.
`protected boolean` `modelCacheInit` Model cache initialised?
`protected java.util.Map<Model,​java.lang.String>` `modelId` Lookup table of (model -> ID).
`protected java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Model>` `modelOf` Lookup table of (resource -> model).
`protected java.util.Map<java.lang.String,​Module>` `modules` The cached value of the '`Modules`' attribute.
`protected VMMonitor` `monitor` The `VMMonitor` for the currently running VM instance.
`protected java.util.Map<java.lang.String,​java.util.Map<java.lang.Integer,​TypeMap<java.lang.Object,​java.lang.Object>>>` `operations` Lookup table for operations: (name -> (argcount -> (context -> ?))) Depending on the number of arguments (argcount), several nested `TypeMap`s are contained, eventually pointing to an `Operation`.
`protected java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Model>` `outputModelOf` Lookup table of (resource -> model).
`protected java.util.Map<java.lang.String,​Model>` `outputModels` The cached value of the '`Output Models`' attribute.
`protected java.util.Map<org.eclipse.emf.ecore.EObject,​org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.RemapEntry>` `remapQueue` Queue of source/target values to be remapped, along with the `StackFrame` context in which the remapping takes place.
`protected java.util.Map<java.lang.String,​Rule>` `rules` Lookup table for rules: (name -> rule).
`protected java.util.Queue<org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.QueueEntry>` `setQueue` `Queue` of features/fields to be set, along with the `StackFrame` context in which the set takes place.
`protected java.util.Map<java.lang.String,​java.util.Map<java.lang.Integer,​TypeMap<java.lang.Object,​java.lang.Object>>>` `staticOperations` Lookup table for static operations: (name -> (argcount -> (context -> ?))) Depending on the number of arguments (argcount), several nested `TypeMap`s are contained, eventually pointing to an `Operation`.
`protected TraceLinkSet` `traces` The cached value of the '`Traces`' reference.
`protected java.util.Map<TraceLink,​java.lang.Object>` `uniqueResults` The cached value of the '`Unique Results`' attribute.

### Fields inherited from class org.eclipse.emf.ecore.impl.EObjectImpl

`eAdapters, eContainer, eContainerFeatureID, EDELIVER, EDYNAMIC_CLASS, eFlags, ELAST_EOBJECT_FLAG, ELAST_NOTIFIER_FLAG, eProperties, EPROXY`

### Fields inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl

`EVIRTUAL_GET, EVIRTUAL_IS_SET, EVIRTUAL_NO_VALUE, EVIRTUAL_SET, EVIRTUAL_UNSET`

### Fields inherited from interface org.eclipse.emf.ecore.InternalEObject

`EOPPOSITE_FEATURE_BASE`

### Constructor Summary

Constructors
`protected` `ExecEnvImpl()` Creates a new `ExecEnvImpl`.

### Method Summary

All Methods Instance Methods Concrete Methods
`TraceLinkSet` `basicGetMatches()` Returns the value of the 'Matches' reference.
`TraceLinkSet` `basicGetTraces()` Returns the value of the 'Traces' reference.
`protected void` `cacheModels()` Caches run-time models in various lookup tables.
`protected void` `clearModelCaches()` Clears the model caches.
`void` `clearModels()` Removes all registered input, in/out, and output models from this `ExecEnv`.
`protected void` `clearRuleModels​(Rule r)` Clears model references for a `Rule`.
`void` `deleteQueue()` Deletes all elements in the deletion queue.
`java.lang.Object` `eGet​(int featureID, boolean resolve, boolean coreType)`
`boolean` `eIsSet​(int featureID)`
`void` `eSet​(int featureID, java.lang.Object newValue)`
`protected org.eclipse.emf.ecore.EClass` `eStaticClass()` Returns the `EClass` that correspond to this metaclass.
`void` `eUnset​(int featureID)`
`Field` `findField​(java.lang.Object context, java.lang.String name)` Finds a `Field` registered within this `ExecEnv`.
`Operation` `findOperation​(java.lang.Object context, java.lang.String name)` Finds an `Operation` registered within this `ExecEnv`.
`Operation` `findOperation​(java.lang.Object context, java.lang.String name, java.lang.Object parameterType)` Finds an `Operation` registered within this `ExecEnv`.
`Operation` `findOperation​(java.lang.Object context, java.lang.String name, java.lang.Object[] parameterTypes)` Finds an `Operation` registered within this `ExecEnv`.
`Rule` `findRule​(java.lang.String name)` Finds a `Rule` registered within this `ExecEnv`.
`Field` `findStaticField​(java.lang.Object context, java.lang.String name)` Finds a static `Field` registered within this `ExecEnv`.
`Operation` `findStaticOperation​(java.lang.Object context, java.lang.String name)` Finds a static `Operation` registered within this `ExecEnv`.
`Operation` `findStaticOperation​(java.lang.Object context, java.lang.String name, java.lang.Object parameterType)` Finds a static `Operation` registered within this `ExecEnv`.
`Operation` `findStaticOperation​(java.lang.Object context, java.lang.String name, java.lang.Object[] parameterTypes)` Finds a static `Operation` registered within this `ExecEnv`.
`java.lang.Object` `findType​(java.lang.String modelName, java.lang.String typeName)` Finds the type for the given (meta-)`modelName` and `typeName`.
`RuleMode` `getCurrentPhase()`
`Model` `getInoutModelOf​(org.eclipse.emf.ecore.EObject object)` Returns the in/out `Model` that is registered in this `ExecEnv`, and that contains `object`.
`java.util.Map<java.lang.String,​Model>` `getInoutModels()` Returns the value of the 'Inout Models' attribute.
`Model` `getInputModelOf​(org.eclipse.emf.ecore.EObject object)` Returns the input `Model` that is registered in this `ExecEnv`, and that contains `object`.
`java.util.Map<java.lang.String,​Model>` `getInputModels()` Returns the value of the 'Input Models' attribute.
`CodeBlockJIT` `getJITCompiler()` Returns the JIT compiler instance for this execution environment.
`TraceLinkSet` `getMatches()` Returns the value of the 'Matches' reference.
`Metamodel` `getMetaModel​(org.eclipse.emf.ecore.resource.Resource resource)` Returns the `Metamodel` for the given `resource`, or `null`.
`java.lang.String` `getMetaModelID​(Metamodel metamodel)` Returns the ID under which `metamodel` is registered within this `ExecEnv`.
`java.util.Map<java.lang.String,​Metamodel>` `getMetaModels()` Returns the value of the 'Meta Models' attribute.
`java.lang.String` `getModelID​(Model model)` Returns the ID under which `model` is registered within this `ExecEnv`.
`Model` `getModelOf​(org.eclipse.emf.ecore.EObject object)` Returns the `Model` that is registered in this `ExecEnv`, and that contains `object`.
`java.util.Map<java.lang.String,​Module>` `getModules()` Returns the value of the 'Modules' attribute.
`VMMonitor` `getMonitor()`
`Model` `getOutputModelOf​(org.eclipse.emf.ecore.EObject object)` Returns the output `Model` that is registered in this `ExecEnv`, and that contains `object`.
`java.util.Map<java.lang.String,​Model>` `getOutputModels()` Returns the value of the 'Output Models' attribute.
`LazyList<Rule>` `getRules()` Returns all rules registered in this `ExecEnv`.
`TraceLinkSet` `getTraces()` Returns the value of the 'Traces' reference.
`java.util.Map<TraceLink,​java.lang.Object>` `getUniqueResults()` Returns the value of the 'Unique Results' attribute.
`boolean` `hasField​(java.lang.String name)` Returns `true` iff this execution environment has any registered fields with the given `name`.
`boolean` `hasOperation​(java.lang.String name, int argcount)` Returns `true` iff this execution environment has any registered operations with the given `name` and `argcount`.
`boolean` `hasStaticField​(java.lang.String name)` Returns `true` iff this execution environment has any registered static fields with the given `name`.
`boolean` `hasStaticOperation​(java.lang.String name, int argcount)` Returns `true` iff this execution environment has any registered static operations with the given `name` and `argcount`.
`boolean` `isJitDisabled()`
`protected boolean` `isRuleStateCompiled()` Returns whether the internal state of the rules has been compiled.
`Module` `loadModule​(ModuleResolver resolver, java.lang.String name)` Loads the module with the given `name` and its imports closure into this `ExecEnv` using the `resolver`, and registers its contents for execution.
`Module` `loadModule​(ModuleResolver resolver, java.lang.String name, boolean validate)` Loads the module with the given `name` and its imports closure into this `ExecEnv` using the `resolver`, and registers its contents for execution.
`void` `queueForAdd​(org.eclipse.emf.ecore.EStructuralFeature feature, org.eclipse.emf.ecore.EObject object, java.lang.Object value, int index, StackFrame frame)` Queues the given object and value for adding a value to the given feature.
`void` `queueForAdd​(Field field, java.lang.Object object, java.lang.Object value, int index, StackFrame frame)` Queues the given object and value for adding a value to the given feature.
`void` `queueForDelete​(org.eclipse.emf.ecore.EObject element, StackFrame frame)` Queues `element` for deletion.
`void` `queueForRemap​(org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EObject target, StackFrame frame)` Queues the given source and target value for remapping.
`void` `queueForRemove​(org.eclipse.emf.ecore.EStructuralFeature feature, org.eclipse.emf.ecore.EObject object, java.lang.Object value, StackFrame frame)` Queues the given object and value for removing a value from the given feature.
`void` `queueForRemove​(Field field, java.lang.Object object, java.lang.Object value, StackFrame frame)` Queues the given object and value for removing a value from the given feature.
`void` `queueForSet​(org.eclipse.emf.ecore.EStructuralFeature feature, org.eclipse.emf.ecore.EObject object, java.lang.Object value, StackFrame frame)` Queues the given object and value for setting the given feature.
`void` `queueForSet​(Field field, java.lang.Object object, java.lang.Object value, StackFrame frame)` Queues the given object and value for setting the given field.
`void` `queueXmiIDForAdd​(org.eclipse.emf.ecore.EObject object, java.lang.Object value, int index, StackFrame frame)` Queues the given object and value for adding to the XMI ID.
`void` `queueXmiIDForRemove​(org.eclipse.emf.ecore.EObject object, java.lang.Object value, StackFrame frame)` Queues the given object and value for removing from the XMI ID.
`void` `queueXmiIDForSet​(org.eclipse.emf.ecore.EObject object, java.lang.Object value, StackFrame frame)` Queues the given object and value for setting the XMI ID.
`protected void` `registerFeature​(Feature feature)` Registers a `Feature` into this `ExecEnv`.
`void` `registerInOutModel​(java.lang.String name, Model model)` Registers `model` as an in/out model under `name`.
`void` `registerInputModel​(java.lang.String name, Model model)` Registers `model` as an input model under `name`.
`void` `registerMetaModel​(java.lang.String name, Metamodel metamodel)` Registers `metamodel` under `name`.
`void` `registerOutputModel​(java.lang.String name, Model model)` Registers `model` as an output model under `name`.
`protected void` `registerRule​(Rule r)` Registers a `Rule` into this `ExecEnv`.
`void` `remapQueue()` Processes all element in the "remap" queue.
`protected void` `resetJITCompiler()` Sets the JIT compiler instance for this execution environment to `null`.
`protected void` `resolveRuleModels​(Rule r)` Resolves model references for a `Rule`.
`java.lang.Object` `run​(TimingData timingData)` Executes the loaded modules and returns the execution result.
`void` `setJitDisabled​(boolean newJitDisabled)`
`void` `setMonitor​(VMMonitor monitor)`
`void` `setQueue()` Processes all elements in the "set" queue.
`protected void` `setRuleStateCompiled​(boolean ruleStateCompiled)` Sets whether the internal state of the rules has been compiled.
`java.lang.String` `toString()`

### Methods inherited from class org.eclipse.emf.ecore.impl.EObjectImpl

`eAdapters, eBasicAdapters, eBasicProperties, eBasicSetContainer, eClass, eContainerFeatureID, eDeliver, eInternalContainer, eInvoke, eIsProxy, eProperties, eSetClass, eSetDeliver, eSetProxyURI`

### Methods inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl

`eAddVirtualValue, eAllContents, eBaseStructuralFeatureID, eBasicRemoveFromContainer, eBasicRemoveFromContainerFeature, eBasicSetContainer, eComputeVirtualValuesCapacity, eContainer, eContainerAdapterArray, eContainingFeature, eContainmentFeature, eContainmentFeature, eContains, eContents, eCrossReferences, eDerivedOperationID, eDerivedOperationID, eDerivedStructuralFeatureID, eDerivedStructuralFeatureID, eDirectResource, eDynamicBasicRemoveFromContainer, eDynamicClass, eDynamicFeature, eDynamicFeatureID, eDynamicGet, eDynamicGet, eDynamicGet, eDynamicInverseAdd, eDynamicInverseAdd, eDynamicInverseRemove, eDynamicInverseRemove, eDynamicInvoke, eDynamicInvoke, eDynamicIsSet, eDynamicIsSet, eDynamicIsSet, eDynamicSet, eDynamicSet, eDynamicSet, eDynamicUnset, eDynamicUnset, eDynamicUnset, eGet, eGet, eGet, eHasSettings, eInternalResource, eInverseAdd, eInverseAdd, eInverseRemove, eInverseRemove, eInvocationDelegate, eInvoke, eIsSet, eObjectForURIFragmentSegment, eOpenGet, eOpenIsSet, eOpenSet, eOpenUnset, eProxyURI, eRemoveVirtualValue, eResolveProxy, eResource, eSet, eSetDirectResource, eSetResource, eSetStore, eSetting, eSettingDelegate, eSettings, eSetVirtualIndexBits, eSetVirtualValue, eSetVirtualValues, eStaticFeatureCount, eStaticOperationCount, eStore, eUnset, eURIFragmentSegment, eVirtualBitCount, eVirtualGet, eVirtualGet, eVirtualIndex, eVirtualIndexBits, eVirtualIsSet, eVirtualSet, eVirtualUnset, eVirtualValue, eVirtualValues`

### Methods inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl

`eBasicAdapterArray, eBasicHasAdapters, eNotificationRequired, eNotify`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.eclipse.emf.ecore.EObject

`eAllContents, eClass, eContainer, eContainingFeature, eContainmentFeature, eContents, eCrossReferences, eGet, eGet, eInvoke, eIsProxy, eIsSet, eResource, eSet, eUnset`

### Methods inherited from interface org.eclipse.emf.ecore.InternalEObject

`eNotificationRequired`

### Methods inherited from interface org.eclipse.emf.common.notify.Notifier

`eAdapters, eDeliver, eNotify, eSetDeliver`

### Field Detail

#### metaModels

    protected java.util.Map<java.lang.String,​Metamodel> metaModels

The cached value of the '`Meta Models`' attribute.

See Also:
  `getMetaModels()`

#### inputModels

    protected java.util.Map<java.lang.String,​Model> inputModels

The cached value of the '`Input Models`' attribute.

See Also:
  `getInputModels()`

#### inoutModels

    protected java.util.Map<java.lang.String,​Model> inoutModels

The cached value of the '`Inout Models`' attribute.

See Also:
  `getInoutModels()`

#### outputModels

    protected java.util.Map<java.lang.String,​Model> outputModels

The cached value of the '`Output Models`' attribute.

See Also:
  `getOutputModels()`

#### modules

    protected java.util.Map<java.lang.String,​Module> modules

The cached value of the '`Modules`' attribute.

See Also:
  `getModules()`

#### matches

    protected TraceLinkSet matches

The cached value of the '`Matches`' reference.

See Also:
  `getMatches()`

#### traces

    protected TraceLinkSet traces

The cached value of the '`Traces`' reference.

See Also:
  `getTraces()`

#### uniqueResults

    protected java.util.Map<TraceLink,​java.lang.Object> uniqueResults

The cached value of the '`Unique Results`' attribute.

See Also:
  `getUniqueResults()`

#### JIT_DISABLED_EDEFAULT

    protected static final boolean JIT_DISABLED_EDEFAULT

The default value of the '`Jit Disabled`' attribute.

See Also:
  `isJitDisabled()`, Constant Field Values

#### jitDisabled

    protected boolean jitDisabled

The cached value of the '`Jit Disabled`' attribute.

See Also:
  `isJitDisabled()`

#### CURRENT_PHASE_EDEFAULT

    protected static final RuleMode CURRENT_PHASE_EDEFAULT

The default value of the '`Current Phase`' attribute.

See Also:
  `getCurrentPhase()`

#### currentPhase

    protected RuleMode currentPhase

The cached value of the '`Current Phase`' attribute.

See Also:
  `getCurrentPhase()`

#### internalMetaModels

    protected final java.util.Map<java.lang.String,​Metamodel> internalMetaModels

The internal value of the '`Meta Models`' attribute.

#### internalInputModels

    protected final java.util.Map<java.lang.String,​Model> internalInputModels

The internal value of the '`Input Models`' attribute.

#### internalInoutModels

    protected final java.util.Map<java.lang.String,​Model> internalInoutModels

The internal value of the '`Inout Models`' attribute.

#### internalOutputModels

    protected final java.util.Map<java.lang.String,​Model> internalOutputModels

The internal value of the '`Output Models`' attribute.

#### internalModules

    protected final java.util.Map<java.lang.String,​Module> internalModules

The internal value of the '`Modules`' attribute.

#### loadedModules

    protected final java.util.Set<java.lang.String> loadedModules

Set of modules that have effectively been loaded. Intended for keeping track of cyclic imports.

#### mainChain

    protected final org.eclipse.emf.common.util.EList<Operation> mainChain

The chain of '`main()`' operations to be executed after the automatic rules.

#### initChain

    protected final org.eclipse.emf.common.util.EList<Operation> initChain

The chain of '`init()`' operations to be executed before the automatic rules.

#### fieldContainer

    protected final FieldContainer fieldContainer

Field storage and lookup.

#### operations

    protected final java.util.Map<java.lang.String,​java.util.Map<java.lang.Integer,​TypeMap<java.lang.Object,​java.lang.Object>>> operations

Lookup table for operations: (name -> (argcount -> (context -> ?))) Depending on the number of arguments (argcount), several nested `TypeMap`s are contained, eventually pointing to an `Operation`. Example: for argcount = 2: (name -> (2 -> (context -> (arg1 -> (arg2 -> op)))))

#### staticOperations

    protected final java.util.Map<java.lang.String,​java.util.Map<java.lang.Integer,​TypeMap<java.lang.Object,​java.lang.Object>>> staticOperations

Lookup table for static operations: (name -> (argcount -> (context -> ?))) Depending on the number of arguments (argcount), several nested `TypeMap`s are contained, eventually pointing to an `Operation`. Example: for argcount = 2: (name -> (2 -> (context -> (arg1 -> (arg2 -> op)))))

#### rules

    protected final java.util.Map<java.lang.String,​Rule> rules

Lookup table for rules: (name -> rule).

#### modelOf

    protected final java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Model> modelOf

Lookup table of (resource -> model).

#### inputModelOf

    protected final java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Model> inputModelOf

Lookup table of (resource -> model).

#### inoutModelOf

    protected final java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Model> inoutModelOf

Lookup table of (resource -> model).

#### outputModelOf

    protected final java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Model> outputModelOf

Lookup table of (resource -> model).

#### metaModelOf

    protected final java.util.Map<org.eclipse.emf.ecore.resource.Resource,​Metamodel> metaModelOf

Lookup table of (resource -> metamodel).

#### modelId

    protected final java.util.Map<Model,​java.lang.String> modelId

Lookup table of (model -> ID).

#### metaModelId

    protected final java.util.Map<Metamodel,​java.lang.String> metaModelId

Lookup table of (metamodel -> ID).

#### modelCacheInit

    protected boolean modelCacheInit

Model cache initialised?

#### monitor

    protected VMMonitor monitor

The `VMMonitor` for the currently running VM instance.

#### deletionQueue

    protected final java.util.Map<org.eclipse.emf.ecore.EObject,​org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.DeletionEntry> deletionQueue

Queue of elements to be deleted, along with the `StackFrame` context in which the deletion takes place.

#### setQueue

    protected final java.util.Queue<org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.QueueEntry> setQueue

`Queue` of features/fields to be set, along with the `StackFrame` context in which the set takes place.

#### remapQueue

    protected final java.util.Map<org.eclipse.emf.ecore.EObject,​org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.RemapEntry> remapQueue

Queue of source/target values to be remapped, along with the `StackFrame` context in which the remapping takes place. Only one queue entry per source value to remap is supported.

#### cbStackValidator

    protected final Validator<CodeBlock> cbStackValidator

Code block stack level validator.

#### instrStackValidator

    protected final Validator<Instruction> instrStackValidator

Instruction stack level validator.

### Constructor Detail

#### ExecEnvImpl

    protected ExecEnvImpl()

Creates a new `ExecEnvImpl`.

### Method Detail

#### eStaticClass

    protected org.eclipse.emf.ecore.EClass eStaticClass()

Returns the `EClass` that correspond to this metaclass.

Overrides:
  `eStaticClass` in class `org.eclipse.emf.ecore.impl.EObjectImpl`
Returns:
  the `EClass` that correspond to this metaclass.

#### getModules

    public java.util.Map<java.lang.String,​Module> getModules()

Returns the value of the 'Modules' attribute.

If the meaning of the 'Modules' reference list isn't clear, there really should be more of a description here...

Specified by:
  `getModules` in interface `ExecEnv`
Returns:
  the value of the 'Modules' attribute.
See Also:
  `EmftvmPackage.getExecEnv_Modules()`

#### getMatches

    public TraceLinkSet getMatches()

Returns the value of the 'Matches' reference.

If the meaning of the 'Matches' reference isn't clear, there really should be more of a description here...

Specified by:
  `getMatches` in interface `ExecEnv`
Returns:
  the value of the 'Matches' reference.
See Also:
  `EmftvmPackage.getExecEnv_Matches()`

#### basicGetMatches

    public TraceLinkSet basicGetMatches()

Returns the value of the 'Matches' reference.

Returns:
  the value of the 'Matches' reference.

#### getTraces

    public TraceLinkSet getTraces()

Returns the value of the 'Traces' reference.

If the meaning of the 'Traces' reference isn't clear, there really should be more of a description here...

Specified by:
  `getTraces` in interface `ExecEnv`
Returns:
  the value of the 'Traces' reference.
See Also:
  `EmftvmPackage.getExecEnv_Traces()`

#### basicGetTraces

    public TraceLinkSet basicGetTraces()

Returns the value of the 'Traces' reference.

Returns:
  the value of the 'Traces' reference.

#### getUniqueResults

    public java.util.Map<TraceLink,​java.lang.Object> getUniqueResults()

Returns the value of the 'Unique Results' attribute.

If the meaning of the 'Unique Results' attribute isn't clear, there really should be more of a description here...

Specified by:
  `getUniqueResults` in interface `ExecEnv`
Returns:
  the value of the 'Unique Results' attribute.
See Also:
  `EmftvmPackage.getExecEnv_UniqueResults()`

#### isJitDisabled

    public boolean isJitDisabled()

Specified by:
  `isJitDisabled` in interface `ExecEnv`
Returns:
  the value of the 'Jit Disabled' attribute.
See Also:
  `ExecEnv.setJitDisabled(boolean)`, `EmftvmPackage.getExecEnv_JitDisabled()`

#### setJitDisabled

    public void setJitDisabled​(boolean newJitDisabled)

Specified by:
  `setJitDisabled` in interface `ExecEnv`
Parameters:
  `newJitDisabled` - the new value of the 'Jit Disabled' attribute.
See Also:
  `ExecEnv.isJitDisabled()`

#### getCurrentPhase

    public RuleMode getCurrentPhase()

Specified by:
  `getCurrentPhase` in interface `ExecEnv`
Returns:
  the value of the 'Current Phase' attribute.
See Also:
  `RuleMode`, `EmftvmPackage.getExecEnv_CurrentPhase()`

#### getMonitor

    public VMMonitor getMonitor()

Returns the `VMMonitor` for the currently running VM instance.

Specified by:
  `getMonitor` in interface `ExecEnv`
Returns:
  the `VMMonitor` for the currently running VM instance.
See Also:
  ``

#### setMonitor

    public void setMonitor​(VMMonitor monitor)

Specified by:
  `setMonitor` in interface `ExecEnv`

#### registerMetaModel

    public void registerMetaModel​(java.lang.String name,
                                  Metamodel metamodel)

Registers `metamodel` under `name`.

Specified by:
  `registerMetaModel` in interface `ExecEnv`
Parameters:
  `name` - the name under which to register
  `metamodel` - the metamodel to register

#### registerInputModel

    public void registerInputModel​(java.lang.String name,
                                   Model model)

Registers `model` as an input model under `name`.

Specified by:
  `registerInputModel` in interface `ExecEnv`
Parameters:
  `name` - the name under which to register
  `model` - the model to register

#### registerInOutModel

    public void registerInOutModel​(java.lang.String name,
                                   Model model)

Registers `model` as an in/out model under `name`.

Specified by:
  `registerInOutModel` in interface `ExecEnv`
Parameters:
  `name` - the name under which to register
  `model` - the model to register

#### registerOutputModel

    public void registerOutputModel​(java.lang.String name,
                                    Model model)

Registers `model` as an output model under `name`.

Specified by:
  `registerOutputModel` in interface `ExecEnv`
Parameters:
  `name` - the name under which to register
  `model` - the model to register

#### clearModels

    public void clearModels()

Removes all registered input, in/out, and output models from this `ExecEnv`.

Specified by:
  `clearModels` in interface `ExecEnv`

#### getMetaModel

    public Metamodel getMetaModel​(org.eclipse.emf.ecore.resource.Resource resource)

Returns the `Metamodel` for the given `resource`, or `null`.

Specified by:
  `getMetaModel` in interface `ExecEnv`
Parameters:
  `resource` - the EMF `Resource` of the `Metamodel`
Returns:
  the `Metamodel`

#### queueForSet

    public void queueForSet​(org.eclipse.emf.ecore.EStructuralFeature feature,
                            org.eclipse.emf.ecore.EObject object,
                            java.lang.Object value,
                            StackFrame frame)

Queues the given object and value for setting the given feature.

Specified by:
  `queueForSet` in interface `ExecEnv`
Parameters:
  `feature` - the feature to set
  `object` - the object for which to set the feature
  `value` - the feature value to set
  `frame` - the stack frame context in which to set the feature value

#### queueForSet

    public void queueForSet​(Field field,
                            java.lang.Object object,
                            java.lang.Object value,
                            StackFrame frame)

Queues the given object and value for setting the given field.

Specified by:
  `queueForSet` in interface `ExecEnv`
Parameters:
  `field` - the field to set
  `object` - the object for which to set the field
  `value` - the field value to set
  `frame` - the stack frame context in which to set the field value

#### queueXmiIDForSet

    public void queueXmiIDForSet​(org.eclipse.emf.ecore.EObject object,
                                 java.lang.Object value,
                                 StackFrame frame)

Queues the given object and value for setting the XMI ID.

Specified by:
  `queueXmiIDForSet` in interface `ExecEnv`
Parameters:
  `object` - the object for which to set the field
  `value` - the field value to set
  `frame` - the stack frame context in which to set the field value

#### queueForAdd

    public void queueForAdd​(org.eclipse.emf.ecore.EStructuralFeature feature,
                            org.eclipse.emf.ecore.EObject object,
                            java.lang.Object value,
                            int index,
                            StackFrame frame)

Queues the given object and value for adding a value to the given feature.

Specified by:
  `queueForAdd` in interface `ExecEnv`
Parameters:
  `feature` - the feature to add to
  `object` - the object for which to add to the feature
  `value` - the feature value to add
  `index` - the index at which to add, or `-1`
  `frame` - the stack frame context in which to add to the feature value

#### queueForAdd

    public void queueForAdd​(Field field,
                            java.lang.Object object,
                            java.lang.Object value,
                            int index,
                            StackFrame frame)

Queues the given object and value for adding a value to the given feature.

Specified by:
  `queueForAdd` in interface `ExecEnv`
Parameters:
  `field` - the field to add to
  `object` - the object for which to add to the field
  `value` - the field value to add
  `index` - the index at which to add, or `-1`
  `frame` - the stack frame context in which to add to the field value

#### queueXmiIDForAdd

    public void queueXmiIDForAdd​(org.eclipse.emf.ecore.EObject object,
                                 java.lang.Object value,
                                 int index,
                                 StackFrame frame)

Queues the given object and value for adding to the XMI ID.

Specified by:
  `queueXmiIDForAdd` in interface `ExecEnv`
Parameters:
  `object` - the object for which to add to the field
  `value` - the field value to add
  `index` - the index at which to add, or `-1`
  `frame` - the stack frame context in which to add to the field value

#### queueForRemove

    public void queueForRemove​(org.eclipse.emf.ecore.EStructuralFeature feature,
                               org.eclipse.emf.ecore.EObject object,
                               java.lang.Object value,
                               StackFrame frame)

Queues the given object and value for removing a value from the given feature.

Specified by:
  `queueForRemove` in interface `ExecEnv`
Parameters:
  `feature` - the feature to remove from
  `object` - the object for which to remove from the feature
  `value` - the feature value to remove
  `frame` - the stack frame context in which to remove from the feature value

#### queueForRemove

    public void queueForRemove​(Field field,
                               java.lang.Object object,
                               java.lang.Object value,
                               StackFrame frame)

Queues the given object and value for removing a value from the given feature.

Specified by:
  `queueForRemove` in interface `ExecEnv`
Parameters:
  `field` - the field to remove from
  `object` - the object for which to remove from the field
  `value` - the field value to remove
  `frame` - the stack frame context in which to remove from the field value

#### queueXmiIDForRemove

    public void queueXmiIDForRemove​(org.eclipse.emf.ecore.EObject object,
                                    java.lang.Object value,
                                    StackFrame frame)

Queues the given object and value for removing from the XMI ID.

Specified by:
  `queueXmiIDForRemove` in interface `ExecEnv`
Parameters:
  `object` - the object for which to remove from the field
  `value` - the field value to remove
  `frame` - the stack frame context in which to remove from the field value

#### setQueue

    public void setQueue()

Processes all elements in the "set" queue. Sets all queued features and fields, and clears the queue.

Specified by:
  `setQueue` in interface `ExecEnv`

#### queueForRemap

    public void queueForRemap​(org.eclipse.emf.ecore.EObject source,
                              org.eclipse.emf.ecore.EObject target,
                              StackFrame frame)

Queues the given source and target value for remapping.

Specified by:
  `queueForRemap` in interface `ExecEnv`
Parameters:
  `source` - the source value to remap
  `target` - the target value to map to
  `frame` - the stack frame context in which to remap

#### remapQueue

    public void remapQueue()

Processes all element in the "remap" queue. Remaps all queued source/target value pairs, and clears the queue.

Specified by:
  `remapQueue` in interface `ExecEnv`

#### getMetaModels

    public java.util.Map<java.lang.String,​Metamodel> getMetaModels()

Returns the value of the 'Meta Models' attribute. The default value is `""`.

If the meaning of the 'Meta Models' attribute isn't clear, there really should be more of a description here...

Specified by:
  `getMetaModels` in interface `ExecEnv`
Returns:
  the value of the 'Meta Models' attribute.
See Also:
  `EmftvmPackage.getExecEnv_MetaModels()`

#### getInputModels

    public java.util.Map<java.lang.String,​Model> getInputModels()

Returns the value of the 'Input Models' attribute. The default value is `""`.

If the meaning of the 'Input Models' attribute isn't clear, there really should be more of a description here...

Specified by:
  `getInputModels` in interface `ExecEnv`
Returns:
  the value of the 'Input Models' attribute.
See Also:
  `EmftvmPackage.getExecEnv_InputModels()`

#### getInoutModels

    public java.util.Map<java.lang.String,​Model> getInoutModels()

Returns the value of the 'Inout Models' attribute. The default value is `""`.

If the meaning of the 'Inout Models' attribute isn't clear, there really should be more of a description here...

Specified by:
  `getInoutModels` in interface `ExecEnv`
Returns:
  the value of the 'Inout Models' attribute.
See Also:
  `EmftvmPackage.getExecEnv_InoutModels()`

#### getOutputModels

    public java.util.Map<java.lang.String,​Model> getOutputModels()

Returns the value of the 'Output Models' attribute. The default value is `""`.

If the meaning of the 'Output Models' attribute isn't clear, there really should be more of a description here...

Specified by:
  `getOutputModels` in interface `ExecEnv`
Returns:
  the value of the 'Output Models' attribute.
See Also:
  `EmftvmPackage.getExecEnv_OutputModels()`

#### loadModule

    public Module loadModule​(ModuleResolver resolver,
                             java.lang.String name)

Loads the module with the given `name` and its imports closure into this `ExecEnv` using the `resolver`, and registers its contents for execution.

Specified by:
  `loadModule` in interface `ExecEnv`
Parameters:
  `resolver` - the module file resolver
  `name` - the module name
Returns:
  the loaded module

#### loadModule

    public Module loadModule​(ModuleResolver resolver,
                             java.lang.String name,
                             boolean validate)

Loads the module with the given `name` and its imports closure into this `ExecEnv` using the `resolver`, and registers its contents for execution.

Specified by:
  `loadModule` in interface `ExecEnv`
Parameters:
  `resolver` - the module file resolver
  `name` - the module name
  `validate` - if `true`, validates the loaded bytecode
Returns:
  the loaded module

#### registerFeature

    protected void registerFeature​(Feature feature)

Registers a `Feature` into this `ExecEnv`.

Parameters:
  `feature` - the `Feature` to register

#### registerRule

    protected void registerRule​(Rule r)

Registers a `Rule` into this `ExecEnv`.

Parameters:
  `rule` - the `Rule` to register

#### resolveRuleModels

    protected void resolveRuleModels​(Rule r)

Resolves model references for a `Rule`.

Parameters:
  `rule` - the `Rule` to resolve

#### clearRuleModels

    protected void clearRuleModels​(Rule r)

Clears model references for a `Rule`.

Parameters:
  `rule` - the `Rule` to resolve

#### findOperation

    public Operation findOperation​(java.lang.Object context,
                                   java.lang.String name,
                                   java.lang.Object[] parameterTypes)

Finds an `Operation` registered within this `ExecEnv`.

Specified by:
  `findOperation` in interface `ExecEnv`
Parameters:
  `context` - the context type of the operation
  `name` - the operation name
  `parameterTypes` - the parameter types of the operation
Returns:
  the `Operation` with the given properties, or `null` if none registered

#### findOperation

    public Operation findOperation​(java.lang.Object context,
                                   java.lang.String name)

Finds an `Operation` registered within this `ExecEnv`.

Specified by:
  `findOperation` in interface `ExecEnv`
Parameters:
  `context` - the context type of the operation
  `name` - the operation name
Returns:
  the `Operation` with the given properties, or `null` if none registered

#### findOperation

    public Operation findOperation​(java.lang.Object context,
                                   java.lang.String name,
                                   java.lang.Object parameterType)

Finds an `Operation` registered within this `ExecEnv`.

Specified by:
  `findOperation` in interface `ExecEnv`
Parameters:
  `context` - the context type of the operation
  `name` - the operation name
  `parameterType` - the parameter type of the operation
Returns:
  the `Operation` with the given properties, or `null` if none registered

#### hasOperation

    public boolean hasOperation​(java.lang.String name,
                                int argcount)

Returns `true` iff this execution environment has any registered operations with the given `name` and `argcount`.

Specified by:
  `hasOperation` in interface `ExecEnv`
Parameters:
  `name` - the operation name
  `argcount` - the number of operation arguments (excluding `self`)
Returns:
  `true` iff this execution environment has any registered operations with the given `name` and `argcount`

#### findStaticOperation

    public Operation findStaticOperation​(java.lang.Object context,
                                         java.lang.String name,
                                         java.lang.Object[] parameterTypes)

Finds a static `Operation` registered within this `ExecEnv`.

Specified by:
  `findStaticOperation` in interface `ExecEnv`
Parameters:
  `context` - the context type of the operation
  `name` - the operation name
  `parameterTypes` - the parameter types of the operation
Returns:
  the static `Operation` with the given properties, or `null` if none registered

#### findStaticOperation

    public Operation findStaticOperation​(java.lang.Object context,
                                         java.lang.String name)

Finds a static `Operation` registered within this `ExecEnv`.

Specified by:
  `findStaticOperation` in interface `ExecEnv`
Parameters:
  `context` - the context type of the operation
  `name` - the operation name
Returns:
  the static `Operation` with the given properties, or `null` if none registered

#### findStaticOperation

    public Operation findStaticOperation​(java.lang.Object context,
                                         java.lang.String name,
                                         java.lang.Object parameterType)

Finds a static `Operation` registered within this `ExecEnv`.

Specified by:
  `findStaticOperation` in interface `ExecEnv`
Parameters:
  `context` - the context type of the operation
  `name` - the operation name
  `parameterType` - the parameter type of the operation
Returns:
  the static `Operation` with the given properties, or `null` if none registered

#### hasStaticOperation

    public boolean hasStaticOperation​(java.lang.String name,
                                      int argcount)

Returns `true` iff this execution environment has any registered static operations with the given `name` and `argcount`.

Specified by:
  `hasStaticOperation` in interface `ExecEnv`
Parameters:
  `name` - the operation name
  `argcount` - the number of operation arguments
Returns:
  `true` iff this execution environment has any registered static operations with the given `name` and `argcount`

#### findField

    public Field findField​(java.lang.Object context,
                           java.lang.String name)

Finds a `Field` registered within this `ExecEnv`.

Specified by:
  `findField` in interface `ExecEnv`
Parameters:
  `context` - the context type of the field
  `name` - the operation name
Returns:
  the `Field` with the given properties, or `null` if none registered

#### hasField

    public boolean hasField​(java.lang.String name)

Returns `true` iff this execution environment has any registered fields with the given `name`.

Specified by:
  `hasField` in interface `ExecEnv`
Parameters:
  `name` - the field name
Returns:
  `true` iff this execution environment has any registered fields with the given `name`

#### findStaticField

    public Field findStaticField​(java.lang.Object context,
                                 java.lang.String name)

Finds a static `Field` registered within this `ExecEnv`.

Specified by:
  `findStaticField` in interface `ExecEnv`
Parameters:
  `context` - the context type of the field
  `name` - the operation name
Returns:
  the static `Field` with the given properties, or `null` if none registered

#### hasStaticField

    public boolean hasStaticField​(java.lang.String name)

Returns `true` iff this execution environment has any registered static fields with the given `name`.

Specified by:
  `hasStaticField` in interface `ExecEnv`
Parameters:
  `name` - the field name
Returns:
  `true` iff this execution environment has any registered static fields with the given `name`

#### findRule

    public Rule findRule​(java.lang.String name)

Finds a `Rule` registered within this `ExecEnv`.

Specified by:
  `findRule` in interface `ExecEnv`
Parameters:
  `name` - the rule name
Returns:
  the `Rule` with the given name, or `null` if none registered

#### findType

    public java.lang.Object findType​(java.lang.String modelName,
                                     java.lang.String typeName)
                              throws java.lang.ClassNotFoundException

Finds the type for the given (meta-)`modelName` and `typeName`.

Specified by:
  `findType` in interface `ExecEnv`
Parameters:
  `modelName` - the name under which the metamodel that contains the type is registered
  `typeName` - the type/metaclass name (may be fully qualified using '`::`')
Returns:
  the type/metaclass
Throws:
  `java.lang.ClassNotFoundException` - if the type is not found

#### run

    public java.lang.Object run​(TimingData timingData)

Executes the loaded modules and returns the execution result.

Specified by:
  `run` in interface `ExecEnv`
Parameters:
  `timingData` - the timing data object, or `null`
Returns:
  the execution result of the last loaded module's `main` operation

#### cacheModels

    protected void cacheModels()

Caches run-time models in various lookup tables.

#### clearModelCaches

    protected void clearModelCaches()

Clears the model caches.

#### getRules

    public LazyList<Rule> getRules()

Returns all rules registered in this `ExecEnv`.

Specified by:
  `getRules` in interface `ExecEnv`
Returns:
  all rules registered in this `ExecEnv`.

#### getModelOf

    public Model getModelOf​(org.eclipse.emf.ecore.EObject object)

Returns the `Model` that is registered in this `ExecEnv`, and that contains `object`.

Specified by:
  `getModelOf` in interface `ExecEnv`
Parameters:
  `object` - the object for which to look up the containing model
Returns:
  the `Model` that contains `object`, or `null` if not found.

#### getModelID

    public java.lang.String getModelID​(Model model)

Returns the ID under which `model` is registered within this `ExecEnv`.

Specified by:
  `getModelID` in interface `ExecEnv`
Parameters:
  `model` - the registered `Model` to retrieve the ID for
Returns:
  the ID under which `model` is registered within this `ExecEnv`.

#### getMetaModelID

    public java.lang.String getMetaModelID​(Metamodel metamodel)

Returns the ID under which `metamodel` is registered within this `ExecEnv`.

Specified by:
  `getMetaModelID` in interface `ExecEnv`
Parameters:
  `metamodel` - the registered `Metamodel` to retrieve the ID for
Returns:
  the ID under which `metamodel` is registered within this `ExecEnv`.

#### queueForDelete

    public void queueForDelete​(org.eclipse.emf.ecore.EObject element,
                               StackFrame frame)

Queues `element` for deletion.

Specified by:
  `queueForDelete` in interface `ExecEnv`
Parameters:
  `element` - the element to delete
  `frame` - the stack frame context in which to perform the deletion

#### deleteQueue

    public void deleteQueue()

Deletes all elements in the deletion queue.

Specified by:
  `deleteQueue` in interface `ExecEnv`

#### getInputModelOf

    public Model getInputModelOf​(org.eclipse.emf.ecore.EObject object)

Returns the input `Model` that is registered in this `ExecEnv`, and that contains `object`.

Specified by:
  `getInputModelOf` in interface `ExecEnv`
Parameters:
  `object` - the object for which to look up the containing model
Returns:
  the input `Model` that contains `object`, or `null` if not found.

#### getInoutModelOf

    public Model getInoutModelOf​(org.eclipse.emf.ecore.EObject object)

Returns the in/out `Model` that is registered in this `ExecEnv`, and that contains `object`.

Specified by:
  `getInoutModelOf` in interface `ExecEnv`
Parameters:
  `object` - the object for which to look up the containing model
Returns:
  the in/out `Model` that contains `object`, or `null` if not found.

#### getOutputModelOf

    public Model getOutputModelOf​(org.eclipse.emf.ecore.EObject object)

Returns the output `Model` that is registered in this `ExecEnv`, and that contains `object`.

Specified by:
  `getOutputModelOf` in interface `ExecEnv`
Parameters:
  `object` - the object for which to look up the containing model
Returns:
  the output `Model` that contains `object`, or `null` if not found.

#### eGet

    public java.lang.Object eGet​(int featureID,
                                 boolean resolve,
                                 boolean coreType)

Specified by:
  `eGet` in interface `org.eclipse.emf.ecore.InternalEObject`
Overrides:
  `eGet` in class `org.eclipse.emf.ecore.impl.BasicEObjectImpl`

#### eSet

    public void eSet​(int featureID,
                     java.lang.Object newValue)

Specified by:
  `eSet` in interface `org.eclipse.emf.ecore.InternalEObject`
Overrides:
  `eSet` in class `org.eclipse.emf.ecore.impl.BasicEObjectImpl`

#### eUnset

    public void eUnset​(int featureID)

Specified by:
  `eUnset` in interface `org.eclipse.emf.ecore.InternalEObject`
Overrides:
  `eUnset` in class `org.eclipse.emf.ecore.impl.BasicEObjectImpl`

#### eIsSet

    public boolean eIsSet​(int featureID)

Specified by:
  `eIsSet` in interface `org.eclipse.emf.ecore.InternalEObject`
Overrides:
  `eIsSet` in class `org.eclipse.emf.ecore.impl.BasicEObjectImpl`

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `org.eclipse.emf.ecore.impl.BasicEObjectImpl`

#### getJITCompiler

    public CodeBlockJIT getJITCompiler()

Returns the JIT compiler instance for this execution environment.

Specified by:
  `getJITCompiler` in interface `ExecEnv`
Returns:
  the JIT compiler instance

#### resetJITCompiler

    protected void resetJITCompiler()

Sets the JIT compiler instance for this execution environment to `null`.

#### isRuleStateCompiled

    protected boolean isRuleStateCompiled()

Returns whether the internal state of the rules has been compiled.

Returns:
  the ruleStateCompiled

#### setRuleStateCompiled

    protected void setRuleStateCompiled​(boolean ruleStateCompiled)

Sets whether the internal state of the rules has been compiled.

Parameters:
  `ruleStateCompiled` - the ruleStateCompiled to set