class Prism::Serialize::ConstantPool

:nodoc:

def get(index, encoding)

def get(index, encoding)
  @pool[index] ||=
    begin
      offset = @base + index * 8
      start = @serialized.unpack1("L", offset: offset)
      length = @serialized.unpack1("L", offset: offset + 4)
      if start.nobits?(1 << 31)
        @input.byteslice(start, length).force_encoding(encoding).to_sym
      else
        @serialized.byteslice(start & ((1 << 31) - 1), length).force_encoding(encoding).to_sym
      end
    end
end

def initialize(input, serialized, base, size)

def initialize(input, serialized, base, size)
  @input = input
  @serialized = serialized
  @base = base
  @size = size
  @pool = Array.new(size, nil)
end