Why does it matter if an object with this map has a changed map for 
optimized code? For example,

```
var a = {x: 5, y: 5};
var b = {x: 10, y: 10};

b.z = 55; // b now has a new map. a is marked as unstable
```

a's map is now unstable, but the map hasn't changed at all has it? The type 
of a's map hasn't changed either so why is it marked as unstable? From what 
I can tell, the only thing that has changed about the map is that a 
transition has been added to it? Why do we deoptimize code that uses this 
map?

Thanks!

- Jann

On Tuesday, December 31, 2019 at 12:46:17 PM UTC-6, Tobias Tebbi wrote:
>
> As long as a map is stable, no object with this map has changed map, which 
> is a very useful property especially for optimized code. To be able to 
> exploit this in optimized code, transitioning from a previously stable map 
> will invalidate and deoptimize all optimized code that made use of the map 
> being stable up to this point.
>
> - Tobias
>
> On Tue, Dec 31, 2019 at 7:07 PM <janngo...@gmail.com <javascript:>> wrote:
>
>> Thanks!
>>
>> What is the point of marking a map as stable? If there was a 
>> normalization isn't a new map created? So if types can't get mixed up after 
>> normalization, what is the point of marking a map as stable?
>>
>> - Jann
>>
>> On Tuesday, December 31, 2019 at 1:33:36 AM UTC-6, Leszek Swirski wrote:
>>>
>>> Hi,
>>>
>>> A stable map is one from which a transition has never been observed, 
>>> i.e. it's the leaf of the transition tree and objects with that map can be 
>>> assumed to be "stable". Perhaps "is_leaf" or "never_transitioned_away_from" 
>>> could be alternative names but it's a subtle concept to name and naming is 
>>> hard anyway :)
>>>
>>> In the code you linked, I'm not 100% familiar with the reasoning but I 
>>> assume that the compiler assumes that inferred stable maps are a "safe bet" 
>>> as far as speculation is concerned, since they're a reliable end state, and 
>>> can be assumed to be a correct inference even if the data is unreliable. 
>>> That's mostly just a guess from the context though.
>>>
>>> - Leszek
>>>
>>> On Tue, 31 Dec 2019, 05:46 , <janngo...@gmail.com> wrote:
>>>
>>>> What is the difference between a stable and unstable map?
>>>>
>>>> Context: I'm trying to understand this line of code 
>>>> https://cs.chromium.org/chromium/src/v8/src/compiler/js-native-context-specialization.cc?l=3227&rcl=4c53f9a51444393133ff303952f1296603d44ab7
>>>>  
>>>> but can't seem to find any documentation about stable maps. Comments and 
>>>> diffs are sparse on the subject as well.
>>>>
>>>> -- 
>>>> -- 
>>>> v8-dev mailing list
>>>> v8-...@googlegroups.com
>>>> http://groups.google.com/group/v8-dev
>>>> --- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "v8-dev" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to v8-...@googlegroups.com.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/v8-dev/d8383180-787c-4bac-8ac3-d9295d400b2c%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/v8-dev/d8383180-787c-4bac-8ac3-d9295d400b2c%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> -- 
>> v8-dev mailing list
>> v8-...@googlegroups.com <javascript:>
>> http://groups.google.com/group/v8-dev
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "v8-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to v8-...@googlegroups.com <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/v8-dev/b2064f2a-93ea-4354-ac53-150a8eb56f68%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/v8-dev/b2064f2a-93ea-4354-ac53-150a8eb56f68%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
-- 
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-dev/51178809-df43-406e-a1fd-133dca435143%40googlegroups.com.

Reply via email to