Package org.mozilla.javascript
Class HashSlotMap
- java.lang.Object
-
- org.mozilla.javascript.HashSlotMap
-
- All Implemented Interfaces:
java.lang.Iterable<ScriptableObject.Slot>
,SlotMap
public class HashSlotMap extends java.lang.Object implements SlotMap
This class implements the SlotMap interface using a java.util.HashMap. This class has more overhead than EmbeddedSlotMap, especially because it puts each "Slot" inside an intermediate object. However it is much more resistant to large number of hash collisions than EmbeddedSlotMap and therefore we use this implementation when an object gains a large number of properties.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.LinkedHashMap<java.lang.Object,ScriptableObject.Slot>
map
-
Constructor Summary
Constructors Constructor Description HashSlotMap()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addSlot(ScriptableObject.Slot newSlot)
Insert a new slot to the map.private ScriptableObject.Slot
createSlot(java.lang.Object key, int index, java.lang.Object name, ScriptableObject.SlotAccess accessType)
ScriptableObject.Slot
get(java.lang.Object key, int index, ScriptableObject.SlotAccess accessType)
Return the Slot that matches EITHER "key" or "index".boolean
isEmpty()
Return whether the map is empty.java.util.Iterator<ScriptableObject.Slot>
iterator()
ScriptableObject.Slot
query(java.lang.Object key, int index)
This is an optimization that is the same as get with an accessType of SLOT_QUERY.void
remove(java.lang.Object key, int index)
Remove the slot at either "key" or "index".int
size()
Return the size of the map.
-
-
-
Field Detail
-
map
private final java.util.LinkedHashMap<java.lang.Object,ScriptableObject.Slot> map
-
-
Method Detail
-
size
public int size()
Description copied from interface:SlotMap
Return the size of the map.
-
isEmpty
public boolean isEmpty()
Description copied from interface:SlotMap
Return whether the map is empty.
-
query
public ScriptableObject.Slot query(java.lang.Object key, int index)
Description copied from interface:SlotMap
This is an optimization that is the same as get with an accessType of SLOT_QUERY. It should be used instead of SLOT_QUERY because it is more efficient.
-
get
public ScriptableObject.Slot get(java.lang.Object key, int index, ScriptableObject.SlotAccess accessType)
Description copied from interface:SlotMap
Return the Slot that matches EITHER "key" or "index". (It will use "key" if it is not null, and otherwise "index". "accessType" is one of the constants defined in ScriptableObject.
-
createSlot
private ScriptableObject.Slot createSlot(java.lang.Object key, int index, java.lang.Object name, ScriptableObject.SlotAccess accessType)
-
addSlot
public void addSlot(ScriptableObject.Slot newSlot)
Description copied from interface:SlotMap
Insert a new slot to the map. Both "name" and "indexOrHash" must be populated. Note that ScriptableObject generally adds slots via the "get" method.
-
remove
public void remove(java.lang.Object key, int index)
Description copied from interface:SlotMap
Remove the slot at either "key" or "index".
-
iterator
public java.util.Iterator<ScriptableObject.Slot> iterator()
- Specified by:
iterator
in interfacejava.lang.Iterable<ScriptableObject.Slot>
-
-