L

lily

An interpreted language with a focus on expressiveness and type safety

Project ID: 7331827
  • Jesse Adkins's avatar
    Values don't store class id in flags now (#327). · d0e41726
    Jesse Adkins authored
    Prior to this patch, values in the vm stored class id in the lower 16
    bits of their flags. The upper 16 bits of flags were reserved for
    flags like refcountedness and gc marks.
    
    With this patch, class ids have been replaced with a set of base
    markers. Each value belongs to one of about 17 or so different groups,
    and gets a corresponding value in that range. Some groups also have a
    flag too. That's because some groups, like Integer, are useful to have
    a quick membership test flag for.
    
    Empty variants store their class id in the field that Integer uses.
    Everything else that has a class id of interest should be a container,
    and thus have a class_id field with it set.
    
    This patch is rough in some places. Value pushing could be made
    simpler, possibly. There's also potential for more kinds of flags.
    
    Originally, the goal of this patch was to get rid of problems that
    Lily was having when being used on a big endian system. However, it
    turns out that this may have some performance potential in the long
    run.
    d0e41726
Name
Last commit
Last update
cmake Loading commit data...
run Loading commit data...
sandbox Loading commit data...
src Loading commit data...
test Loading commit data...
try Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
CMakeLists.txt Loading commit data...
CONTRIBUTING.md Loading commit data...
README.md Loading commit data...
RELEASES.md Loading commit data...
appveyor.yml Loading commit data...
license.txt Loading commit data...