Branches

type-specialized-instances

View source
type-specialized-instances
  • Contributors
    1. Loading...
Author Commit Message Labels Comments Date
250+ commits behind default.
Lars Wassermann
merge
Carl Friedrich Bolz
also add a unicode specialization
Carl Friedrich Bolz
merge default
Carl Friedrich Bolz
merge
Carl Friedrich Bolz
specialize string fields
Carl Friedrich Bolz
type-specialize int attributes
Carl Friedrich Bolz
stop using strings as "the other type"
Carl Friedrich Bolz
make sure that if you tag the same thing twice you reuse the result
Carl Friedrich Bolz
on the branch mapdict needs tagged pointers
Carl Friedrich Bolz
the code as it was before used instantiate within an elidable function, which makes it not analyzable. hack differently.
Carl Friedrich Bolz
adapt to new way of doing stuff
Carl Friedrich Bolz
merge default
l.diekmann
these lines are now unnecessary
l.diekmann
fixed OverflowError for type-specialized instances
l.diekmann
merged default
Lukas Diekmann
(cfbolz, l.diekmann): merge int-tag-untag-as-operationus to get the necessary optimizations to make this branch useful
Lukas Diekmann
merge default
l.diekmann
fixes for type-specialized-attributes
Lukas Diekmann
oups
Lukas Diekmann
merge with default
Lukas Diekmann
some fixes for type-specialized-attributes
Lukas Diekmann
fixed mapdict tests
Carl Friedrich Bolz
merge default
Carl Friedrich Bolz
merge default
Carl Friedrich Bolz
merge
Carl Friedrich Bolz
a tagged int cannot move
Carl Friedrich Bolz
test and fix: make constand-folding of int_tag not crash
Carl Friedrich Bolz
same fix is needed here
Carl Friedrich Bolz
refactor the int_tag/untag optimization to fit the new style
Carl Friedrich Bolz
can only untag odd ints
Carl Friedrich Bolz
merge default (breaks some things, will fix in the next commit)
Lukas Diekmann
added tests and fixes for overwriting attributes with another type and for untaggable ints
Lukas Diekmann
fallback to PlainAttribute on AttributeError. this fix is needed for modules, since they do not have a typedef
Lukas Diekmann
fixed some tests where storage items are erased. there is no general erasing pair anymore so we need to use the methods from the correct AbstractAttribute to (un)erase
Lukas Diekmann
None should be erased by PlainAttribute
Lukas Diekmann
reverted last fix, found a new (and better) one
Lukas Diekmann
removed some old debug prints
Lukas Diekmann
started fixing tests to work with new selector
Lukas Diekmann
fixed read with new selector (still not sure if this is the right fix)
Lukas Diekmann
fix: former PlainAttribute is now AbstractStoredAttribute
Lukas Diekmann
removed some old prints
Lukas Diekmann
introduced IntAttribute
Lukas Diekmann
read attributes only through Attribute class. fixed tests
Lukas Diekmann
do not use index anymore to read attributes. in future the attributes manage (un)erasing and (un)wrapping of their values themselves
Lukas Diekmann
(l.diekmann, cfbolz): a branch to play with the idea of type-specializing instances
Carl Friedrich Bolz
move an ll_assert around: cast_ptr_to_int *can* be used on an even pointer (to check whether it is tagged). however, int_untag should really only be used on odd numbers.
Carl Friedrich Bolz
when the optimizer sees an int_tag operation, it can later remove the int_and(x, 1) operation because it knows the int is tagged.
Carl Friedrich Bolz
use int_untag for untagging too (duh)
Carl Friedrich Bolz
make tagged instances use the new operations as well
Carl Friedrich Bolz
merge default
Carl Friedrich Bolz
those are also not needed
Carl Friedrich Bolz
make all optimizeopt tests pass
Carl Friedrich Bolz
woops
Carl Friedrich Bolz
(arigo, cfbolz): implement int_tag, int_tag_ovf and int_untag in the x86 backend
Carl Friedrich Bolz
introduce an no-overflow-check variant int_tag for when the bounds-optimizer finds out that something cannot overflow.
Carl Friedrich Bolz
rename the operation to int_tag_ovf
Carl Friedrich Bolz
check that operations on untagged integers get their overflow checks removed
Carl Friedrich Bolz
add a more precise .mul operation on integer bounds.
Carl Friedrich Bolz
each the optimizer that int_tag and int_untag are each others opposites
Carl Friedrich Bolz
introduce int_tag (which can overflow) and int_untag
Carl Friedrich Bolz
a branch where to make int tagging and untagging explicit operations