Hi Toon,

I appreciate your reply. I'm sorry but my understanding of type system is 
not enough to understand this transition and tagged mode.
If there is a link that explains about tagged value and general type 
system, can you please send it?
I couldn't find a understandable explanation in the git history.

Thanks a lot,
Honggyu

On Tuesday, January 12, 2016 at 10:08:38 PM UTC+9, Toon Verwaest wrote:
>
> The behavior is correct. Field my_prop transitioned from integer mode to 
> "tagged" (any) mode. The IC stays monomorphic since it just generalized the 
> field type.
>
> Regards,
> Toon
>
> On Tue, Jan 12, 2016 at 2:03 PM nexus226 <[email protected] <javascript:>> 
> wrote:
>
>> Hi v8-folks,
>>
>> I have some doubts regarding inline cache behaviour. If you don't mind I 
>> would like to ask some questions here.
>>
>> The example is as below:
>> ```
>> $ cat simple.js
>> function foo(_prop) {
>>   this.my_prop = _prop;
>> }
>>
>> var a = new foo(3);            // expects this.my_prop to be 
>> premonomorphic
>> var b = new foo(5);            // expects this.my_prop to be monomorphic
>> var c = new foo(7);            // expects to stay in monomorphic
>> var d = new foo("hello");    // expects this.my_prop to be polymorphic
>> ```
>>
>> I run the example with trace_ic option.
>> ```
>> $ ./d8 --trace_ic simple.js | grep my_prop
>> [StoreIC in ~foo+64 at simple.js:2 (0->.) #my_prop]
>> [StoreIC in ~foo+64 at simple.js:2 (.->1) #my_prop]
>> [StoreIC in ~foo+64 at simple.js:2 (^->1) #my_prop]
>> ```
>>
>> In the above example, how come inline cache of my_prop is changed as 
>> below?
>> 1. UNINITIALIZED(0) -> PREMONOMORPHIC(.)
>> 2. PREMONOMORPHIC(.) -> MONOMORPHIC(1)
>> 3. suddenly PROTOTYPE_FAILURE(^) -> MONOMORPHIC(1)
>>
>> I don't understand the transition from step 2 to step 3. As far as I 
>> understood, it has to be MONOMORPHIC -> POLYMORPHIC.
>> Is this correct behaviour?
>>
>> Best regards,
>> Honggyu
>>
>> -- 
>> -- 
>> v8-dev mailing list
>> [email protected] <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 [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
-- 
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to