<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<br>
<br>
<div class="moz-cite-prefix">On 8/20/20 9:41 AM, Gábor Horváth
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAPRL4a3WS7A9-1KZH=uwBeO2HooTHn++Vd9q7jCzqao27VdWFw@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr"><br>
</div>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, 19 Aug 2020 at
23:18, Artem Dergachev <<a
href="mailto:noqnoqneo@gmail.com" moz-do-not-send="true">noqnoqneo@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div> Gabor, we've talked about this two days ago >_><br>
</div>
</blockquote>
<div> </div>
<div>This email is much easier to follow than a verbal
discussion :D Now I have a much better understanding of what
you meant.<br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div> <br>
I believe we should remove SymbolConjured's identity
elements from SymbolMetadata and instead make it work more
like SymbolRegionValue works in RegionStore. Namely:<br>
</div>
</blockquote>
<div><br>
</div>
<div>If SymbolMetadata works like SymbolRegionValue, do we
actually need both? I mean I do understand that we use them
for different purposes, but we could also have a type alias
or something like that if that actually helps understanding
how the analyzer works.<br>
</div>
</div>
</div>
</blockquote>
<br>
Yes, i believe they can be technically backed by the same re-used
implementation.<br>
<br>
Btw i just unforgot about the deep connection between
SymbolRegionValue and SymbolDerived. We'll also probably need to
introduce derived metadata. Say, if a smart pointer is part of a
bigger object and that bigger object is invalidated, it doesn't mean
that we immediately conjure a bunch of symbols for all raw values in
all smart pointers that we aren't tracking that are sub-regions of
that object; instead, we could simply start producing derived
metadata instead of normal metadata when asked.<br>
<br>
<blockquote type="cite"
cite="mid:CAPRL4a3WS7A9-1KZH=uwBeO2HooTHn++Vd9q7jCzqao27VdWFw@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div> <br>
2. Get rid of the metadata-in-use set. From now on
SymbolMetadata, like SymbolRegionValue, is live whenever
its region is live.<br>
</div>
</blockquote>
<div><br>
</div>
<div>Will this work for code examples where the actual string
is already dead but we still want to compute with its
length? <br>
</div>
</div>
</div>
</blockquote>
<br>
When i say "is live whenever its region is live", i mean that the
opposite is not necessarily true. If the symbol is stored anywhere
in memory then it's definitely live.<br>
<br>
Like, generally, all objects can be "internally live" (example:
"SymbolRegionValue<R> is internally live if R is live
[externally or internally]") or "externally live" (which can be only
determined by exploring the current exploded node in its entirety
and implemented via populating live and dead sets, example: "if
symbol $x is written into region R and R is live [externally or
internally] then $x is externally live").<br>
<br>
I was talking about internal liveness rules; external liveness rules
are untouched.<br>
<br>
Such mental distinction is pretty important because only finite
amount of symbols can be externally live (as the amount of info in
the state is finite, and so is the live set); the amount of
internally live symbols is potentially infinite.<br>
</body>
</html>