Class HashSlotMap

java.lang.Object
org.mozilla.javascript.HashSlotMap
All Implemented Interfaces:
Iterable<org.mozilla.javascript.ScriptableObject.Slot>, SlotMap

public class HashSlotMap extends 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.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addSlot(org.mozilla.javascript.ScriptableObject.Slot newSlot)
    Insert a new slot to the map.
    org.mozilla.javascript.ScriptableObject.Slot
    get(Object key, int index, org.mozilla.javascript.ScriptableObject.SlotAccess accessType)
    Return the Slot that matches EITHER "key" or "index".
    boolean
    Return whether the map is empty.
    Iterator<org.mozilla.javascript.ScriptableObject.Slot>
     
    org.mozilla.javascript.ScriptableObject.Slot
    query(Object key, int index)
    This is an optimization that is the same as get with an accessType of SLOT_QUERY.
    void
    remove(Object key, int index)
    Remove the slot at either "key" or "index".
    int
    Return the size of the map.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface java.lang.Iterable

    forEach, spliterator
  • Constructor Details

    • HashSlotMap

      public HashSlotMap()
  • Method Details

    • size

      public int size()
      Description copied from interface: SlotMap
      Return the size of the map.
      Specified by:
      size in interface SlotMap
    • isEmpty

      public boolean isEmpty()
      Description copied from interface: SlotMap
      Return whether the map is empty.
      Specified by:
      isEmpty in interface SlotMap
    • query

      public org.mozilla.javascript.ScriptableObject.Slot query(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.
      Specified by:
      query in interface SlotMap
    • get

      public org.mozilla.javascript.ScriptableObject.Slot get(Object key, int index, org.mozilla.javascript.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.
      Specified by:
      get in interface SlotMap
    • addSlot

      public void addSlot(org.mozilla.javascript.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.
      Specified by:
      addSlot in interface SlotMap
    • remove

      public void remove(Object key, int index)
      Description copied from interface: SlotMap
      Remove the slot at either "key" or "index".
      Specified by:
      remove in interface SlotMap
    • iterator

      public Iterator<org.mozilla.javascript.ScriptableObject.Slot> iterator()
      Specified by:
      iterator in interface Iterable<org.mozilla.javascript.ScriptableObject.Slot>