| java.lang.Object oscript.data.Value oscript.data.Scope oscript.data.BasicScope
All known Subclasses: oscript.data.GlobalScope, oscript.data.ScriptObject, oscript.data.FunctionScope,
BasicScope | public class BasicScope extends Scope (Code) | | Scope is an internal object use to represent a scope of execution. This
class implements a basic scope which can have members created and accessed
via lookupInScope or getMember .
Different instances of a scope that represent the same part of the syntax
tree can share the hashtable that maps member name to member index. This
reduces the number of hashtables that need to be created as scopes are
created, to improve performance. The member index is an index into each
scope instances array of members.
In cases where it is safe to allocate storage for this scope from the
stack, the current
StackFrame may be passed to the constructor,
in which case this object will try and allocate it's member storage from
the stack. It is only safe to use the stack for storage allocation in
cases where this scope does not enclose a function instance, so if the
scope does enclose a function declaration, null must be
passed in to the constructor instead of the current stack frame.
author: Rob Clark (rob@ti.com) |
Field Summary | |
protected MemberTable | members The table of members of the scope. | protected Value[] | mixins List of mixed in vars, or null if none. | protected SymbolTable | smit The shared member index table maps member name to an index into the
members array. |
members | protected MemberTable members(Code) | | The table of members of the scope. This is unique to each scope
instance.
|
mixins | protected Value[] mixins(Code) | | List of mixed in vars, or null if none.
|
smit | protected SymbolTable smit(Code) | | The shared member index table maps member name to an index into the
members array.
|
BasicScope | public BasicScope(Scope previous)(Code) | | Class Constructor. Construct a new element in the scope chain. This
constructs a "regular" element in the scope chain, as opposed to the
element that is created when a function is called.
Parameters: previous - previous in environment scope chain |
BasicScope | public BasicScope(Scope previous, SymbolTable smit)(Code) | | Class Constructor. Construct a new element in the scope chain. This
constructs a "regular" element in the scope chain, as opposed to the
element that is created when a function is called.
Parameters: previous - previous in environment scope chain Parameters: smit - shared member idx table |
BasicScope | protected BasicScope(Scope previous, SymbolTable smit, MemberTable members)(Code) | | Class Constructor.
Parameters: previous - previous scope Parameters: smit - shared-member-index-table Parameters: members - members, can be used by function scope to directlymap arguments to the function into the function's scope |
__getInstanceMember | public Value __getInstanceMember(int id)(Code) | | |
createMember | public Value createMember(int id, int attr)(Code) | | Create a member of this object with the specified value.
Note that the theory behind not synchronizing this is that it can only
be a race condition against itself, not against getMember, etc, and that
this will only be called from a single thread context.
Parameters: id - the id of the symbol that maps to the member Parameters: attr - the attributes of the object (see Reference .) See Also: Reference |
free | public void free()(Code) | | Indicate that this scope is no longer needed
|
getInstanceMemberImpl | protected Value getInstanceMemberImpl(int id)(Code) | | |
getMemberImpl | protected Value getMemberImpl(int id)(Code) | | |
getSafeCopy | public Scope getSafeCopy()(Code) | | In case a scope has any resource allocated from a source which will
no long be valid after a stack frame has returned (ie. resource
allocated from stack), return a copy of the scope that is safe to
keep after the stack frame returns.
|
getType | public Value getType()(Code) | | Get the type of this object. This is overloaded so that mixed in
objects have an appropriate effect on instanceof
the object's type |
getTypeImpl | protected Value getTypeImpl()(Code) | | Get the type of this object. The returned type doesn't have to take
into account the possibility of a script type extending a built-in
type, since that is handled by
BasicScope.getType .
the object's type |
isSafe | public boolean isSafe()(Code) | | |
lookupInScope | public Value lookupInScope(int id) throws PackagedScriptObjectException(Code) | | Get a member from this scope. This is used to access local variables
and object attributes from methods of the object. If the attribute
isn't in this node in the scope chain, then the previous
node in the scope chain is checked.
Parameters: id - the id of the symbol that maps to the member throws: PackagedScriptObjectException - (NoSuchMemberException) |
mixin | public void mixin(Value val)(Code) | | "mixin" the specified variable into the current scope.
Parameters: val - the value to mixin to this scope |
populateMemberSet | protected void populateMemberSet(Set s, boolean debugger)(Code) | | Derived classes that implement
BasicScope.getMember should also
implement this.
Parameters: s - the set to populate Parameters: debugger - true if being used by debugger, inwhich case both public and private/protected field names should be returned See Also: BasicScope.getMember |
reset | final public void reset()(Code) | | Reset this scope object. When program execution has left this scope
block, it must be reset to ensure that any reference to it's members
be freed.
|
Methods inherited from oscript.data.Value | public static Value _getTypeMember(Value type, Value obj, int id)(Code)(Java Doc) public static void _populateTypeMemberSet(Value type, java.util.Set s, boolean d)(Code)(Java Doc) public Value bopBitwiseAnd(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopBitwiseAndR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopBitwiseOr(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopBitwiseOrR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopBitwiseXor(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopBitwiseXorR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopCast(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopCastR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopDivide(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopDivideR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopEquals(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopEqualsR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopGreaterThan(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopGreaterThanOrEquals(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopGreaterThanOrEqualsR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopGreaterThanR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopInstanceOf(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopInstanceOfR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLeftShift(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLeftShiftR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLessThan(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLessThanOrEquals(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLessThanOrEqualsR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLessThanR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLogicalAnd(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLogicalAndR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLogicalOr(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopLogicalOrR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopMinus(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopMinusR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopMultiply(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopMultiplyR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopNotEquals(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopNotEqualsR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopPlus(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopPlusR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopRemainder(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopRemainderR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopSignedRightShift(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopSignedRightShiftR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopUnsignedRightShift(Value val) throws PackagedScriptObjectException(Code)(Java Doc) public Value bopUnsignedRightShiftR(Value val, PackagedScriptObjectException e) throws PackagedScriptObjectException(Code)(Java Doc) public Value callAsConstructor(StackFrame sf, MemberTable args) throws PackagedScriptObjectException(Code)(Java Doc) final public Value callAsConstructor(Value[] args) throws PackagedScriptObjectException(Code)(Java Doc) final public Value callAsConstructor(StackFrame sf, Value[] args)(Code)(Java Doc) public Value callAsExtends(StackFrame sf, Scope scope, MemberTable args) throws PackagedScriptObjectException(Code)(Java Doc) final public Value callAsExtends(Scope scope, MemberTable args) throws PackagedScriptObjectException(Code)(Java Doc) final public Value callAsExtends(StackFrame sf, Scope scope, Value[] args)(Code)(Java Doc) public Value callAsFunction(StackFrame sf, MemberTable args) throws PackagedScriptObjectException(Code)(Java Doc) final public Value callAsFunction(Value[] args) throws PackagedScriptObjectException(Code)(Java Doc) final public Value callAsFunction(StackFrame sf, Value[] args)(Code)(Java Doc) public boolean castToBoolean() throws PackagedScriptObjectException(Code)(Java Doc) public long castToExactNumber() throws PackagedScriptObjectException(Code)(Java Doc) public double castToInexactNumber() throws PackagedScriptObjectException(Code)(Java Doc) public Object castToJavaObject() throws PackagedScriptObjectException(Code)(Java Doc) public String castToString() throws PackagedScriptObjectException(Code)(Java Doc) public Value elementAt(Value idx) throws PackagedScriptObjectException(Code)(Java Doc) public Value elementsAt(Value idx1, Value idx2) throws PackagedScriptObjectException(Code)(Java Doc) final public Value getMember(String name) throws PackagedScriptObjectException(Code)(Java Doc) public Value getMember(Value name) throws PackagedScriptObjectException(Code)(Java Doc) final public Value getMember(int id) throws PackagedScriptObjectException(Code)(Java Doc) final public Value getMember(String name, boolean exception) throws PackagedScriptObjectException(Code)(Java Doc) final public Value getMember(Value name, boolean exception) throws PackagedScriptObjectException(Code)(Java Doc) public Value getMember(int id, boolean exception) throws PackagedScriptObjectException(Code)(Java Doc) public Object getMonitor()(Code)(Java Doc) public Value getType()(Code)(Java Doc) abstract protected Value getTypeImpl()(Code)(Java Doc) protected Value getTypeMember(Value obj, int id)(Code)(Java Doc) final protected Value getTypeMember(Value obj, Value name)(Code)(Java Doc) public boolean isA(Value type)(Code)(Java Doc) public int length() throws PackagedScriptObjectException(Code)(Java Doc) public java.util.Set memberSet()(Code)(Java Doc) protected PackagedScriptObjectException noSuchMember(String member)(Code)(Java Doc) public void opAssign(Value val) throws PackagedScriptObjectException(Code)(Java Doc) protected void populateMemberSet(java.util.Set s, boolean debugger)(Code)(Java Doc) protected void populateTypeMemberSet(java.util.Set s, boolean debugger)(Code)(Java Doc) public void readExternal(java.io.ObjectInput in) throws ClassNotFoundException, java.io.IOException(Code)(Java Doc) public String toString()(Code)(Java Doc) public Value unhand()(Code)(Java Doc) public Value uopBitwiseNot() throws PackagedScriptObjectException(Code)(Java Doc) public Value uopDecrement() throws PackagedScriptObjectException(Code)(Java Doc) public Value uopIncrement() throws PackagedScriptObjectException(Code)(Java Doc) public Value uopLogicalNot() throws PackagedScriptObjectException(Code)(Java Doc) public Value uopMinus() throws PackagedScriptObjectException(Code)(Java Doc) public Value uopPlus() throws PackagedScriptObjectException(Code)(Java Doc) public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException(Code)(Java Doc)
|
|
|