Class EmbeddedSlotMap

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

public class EmbeddedSlotMap extends Object implements SlotMap
  • Field Details

    • slots

      private Slot[] slots
    • firstAdded

      private Slot firstAdded
    • lastAdded

      private Slot lastAdded
    • count

      private int count
    • INITIAL_SLOT_SIZE

      private static final int INITIAL_SLOT_SIZE
      See Also:
  • Constructor Details

    • EmbeddedSlotMap

      public EmbeddedSlotMap()
  • 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
    • iterator

      public Iterator<Slot> iterator()
      Specified by:
      iterator in interface Iterable<Slot>
    • query

      public Slot query(Object key, int index)
      Locate the slot with the given name or index.
      Specified by:
      query in interface SlotMap
      Parameters:
      key - The key for the slot, which should be a String or a Symbol.
      index - if key is zero, then this will be used as the key instead.
      Returns:
      either the Slot that matched the key and index, or null
    • modify

      public Slot modify(Object key, int index, int attributes)
      Locate the slot with given name or index, and create a new one if necessary.
      Specified by:
      modify in interface SlotMap
      Parameters:
      key - either a String or a Symbol object that identifies the property
      index - index or 0 if slot holds property name.
      attributes - the attributes to be set on the slot if a new slot is created. Existing slots will not be modified.
      Returns:
      a Slot, which will be created anew if no such slot exists.
    • createSlot

      private Slot createSlot(Object key, int indexOrHash, int attributes)
    • replace

      public void replace(Slot oldSlot, Slot newSlot)
      Description copied from interface: SlotMap
      Replace "slot" with a new slot. This is used to change slot types.
      Specified by:
      replace in interface SlotMap
    • add

      public void add(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 "modify" method.
      Specified by:
      add in interface SlotMap
    • insertNewSlot

      private void insertNewSlot(Slot newSlot)
    • 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
      Parameters:
      key - The key for the slot, which should be a String or a Symbol.
      index - if key is zero, then this will be used as the key instead.
    • copyTable

      private static void copyTable(Slot[] oldSlots, Slot[] newSlots)
    • addKnownAbsentSlot

      private static void addKnownAbsentSlot(Slot[] addSlots, Slot slot)
      Add slot with keys that are known to absent from the table. This is an optimization to use when inserting into empty table, after table growth or during deserialization.
    • getSlotIndex

      private static int getSlotIndex(int tableSize, int indexOrHash)