Good news that it doesn't affect Speedometer. Does this have any effect on pure 
JS benchmarks running in the browser (e.g. JetStream)?

 - Maciej

> On Feb 28, 2017, at 10:48 AM, Filip Pizlo <[email protected]> wrote:
> 
> Sounds good!
> 
> I agree that a 20% regression on a microbenchmark of the exclusive JSLock is 
> not a problem, since that's not how WebCore usually behaves and Speedometer 
> doesn't seem to care.
> 
> -Filip
> 
> 
>> On Feb 28, 2017, at 10:38 AM, Mark Lam <[email protected]> wrote:
>> 
>> I’ve run Speedometer many times on a quiet 13” MacBookPro: removing the use 
>> of exclusive thread status does not appear to impact performance in any 
>> measurable way.  I also did some measurements on a microbenchmark locking 
>> and unlocking the JSLock using a JSLockHolder in a loop.  The microbenchmark 
>> shows that removing exclusive thread status results in the locking and 
>> unlocking operation increasing by up to 20%.
>> 
>> Given that locking and unlocking the JSLock is a very small fraction of the 
>> work done in a webpage, it’s not surprising that the 20% increase in time 
>> for the lock and unlock operation is not measurable in Speedometer.  Note 
>> also that the 20% only impacts WebCore which uses the exclusive thread 
>> status.  For all other clients of JSC (which never uses exclusive thread 
>> status), it may actually be faster to have exclusive thread checks removed 
>> (simply due to that code doing less work).
>> 
>> I’ll put up a patch to remove the use of exclusive thread status.  This will 
>> simplify the code and make it easier to move forward with new features.
>> 
>> Mark
>> 
>> 
>>> On Feb 24, 2017, at 9:01 PM, Filip Pizlo <[email protected]> wrote:
>>> 
>>> Seems like if the relevant benchmarks (speedometer) are ok with it then we 
>>> should just do this. 
>>> 
>>> -Filip
>>> 
>>>> On Feb 24, 2017, at 20:50, Mark Lam <[email protected]> wrote:
>>>> 
>>>> The JSC VM has this method setExclusiveThread().  Some details:
>>>> 1. setExclusiveThread() is only used to forego actually locking/unlocking 
>>>> the underlying lock inside JSLock.
>>>> 2. setExclusiveThread() is only used by WebCore where we can guarantee 
>>>> that the VM will only ever be used exclusively on one thread.
>>>> 3. the underlying lock inside JSLock used to be a slow system lock.
>>>> 
>>>> Now that we have fast locking, I propose that we simplify the JSLock code 
>>>> by removing the concept of the exclusiveThread and always lock/unlock the 
>>>> underlying lock.  This also give us the ability to tryLock the JSLock 
>>>> (something I would like to be able to do for something new I’m working on).
>>>> 
>>>> Does anyone see a reason why we can’t remove the concept of the 
>>>> exclusiveThread?
>>>> 
>>>> Thanks.
>>>> 
>>>> Mark
>>>> 
>>>> _______________________________________________
>>>> webkit-dev mailing list
>>>> [email protected]
>>>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>> 
> 
> _______________________________________________
> webkit-dev mailing list
> [email protected]
> https://lists.webkit.org/mailman/listinfo/webkit-dev

_______________________________________________
webkit-dev mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to