Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private auto _samples_addrs() const
- {
- const(AccessUnit)[] samples;
- if(_samples.keys().length > 0)
- {
- samples = _samples[_samples.keys()[0]];
- }
- return map!(x => cast(void*)x)(samples);
- }
- private static string attr(void * p)
- {
- import core.memory : GC;
- auto root = GC.addrOf(p);
- auto bi = GC.getAttr(root);
- auto map = [
- GC.BlkAttr.FINALIZE : "FINALIZE",
- GC.BlkAttr.NO_SCAN : "NO_SCAN",
- GC.BlkAttr.NO_MOVE : "NO_MOVE",
- GC.BlkAttr.APPENDABLE : "APPENDABLE",
- GC.BlkAttr.NO_INTERIOR : "NO_INTERIOR",
- ];
- string s = "";
- foreach(k, v; map)
- {
- if(bi && k)
- {
- s ~= v ~ " ";
- }
- }
- return s;
- }
- invariant()
- {
- import core.memory;
- std.stdio.stderr.writefln("-> invariant %s: as: %s samples: %s", cast(void*) this, _adapt_stream_index, _samples_addrs());
- //std.stdio.stderr.writefln("\t-> collect");
- //GC.collect();
- //std.stdio.stderr.writefln("\t<- collect");
- assert(GC.addrOf(cast(void*)this) !is null);
- foreach(as, s; _samples)
- {
- auto root = GC.addrOf(cast(void*) s.ptr);
- std.stdio.stderr.writefln("\t\tkeys ptr: %s root: %s:%s attr: %s", s.ptr, root, GC.sizeOf(root), attr(root));
- foreach(x; s)
- {
- std.stdio.stderr.writefln("\t\t[%s] keys: %s as: %s au: %s", cast(void*) Thread.getThis(), _samples.keys, _adapt_stream_index, cast(void*)x);
- assert(GC.addrOf(cast(void*)x) !is null);
- //std.file.write("/dev/null", "%s".format(x.random_access));
- //auto s1 = x.random_access;
- }
- foreach(x; s)
- {
- auto s1 = x.random_access;
- }
- }
- std.stdio.stderr.writefln("<- invariant %s", cast(void*) this);
- }
- private AccessUnit[][StreamIndex] _samples;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement