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