Skip to content

Unfuddle CompactObject #6137

@dranikpg

Description

@dranikpg

Goals:

  1. We use 16 bits for mask space in a key/value pair, but use only 6 different flags exclusively on either values or keys. Reduce mask size to one byte (in key) and free up one byte in value
    • maybe move all flags to value to remove one byte from expiry table key additionally
  2. Reduce code complexity
    • Use different types for keys and values, inheriting both compact object, but hiding non-relevant functions and simiplifying logic
    • Review old string management code and simplify it
    • Review externally induced interface members (returning directly RObjWrapper, stream/sbf functions) that should be kept in familiy code and simplified

-> save ony byte per slot, have simpler object interface and hopefully a few hundred lines less code

Steps:

  • Remove async delete flag usage (can be replaced by a function parameter...)
  • Refactor small string
  • Tidy up huffman code, encoding code_
  • Remove GetFirstByte
  • Remove raw access to RObjWrapper, remove unnecessary functions (InlineLen(), allows empty state, etc)
  • Remove OBJ_ENCODING_INT and similar, its never used
  • Move encoding to tagbyte_
  • Change huffman_enc to is_key and rebase all other usage around it
  • Use basic different types to catch sloppy type usage (there are cases), set is_key implicitily
  • Move all flags to key object
  • Review Free/SetMeta/Reset/etc functionality to be duplicate free

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions