Re: comments on Matrix

2013/3/22 Rik Cabanier <cabanier@gmail.com>

>
>
> On Fri, Mar 22, 2013 at 9:51 AM, Benoit Jacob <jacob.benoit.1@gmail.com>wrote:
>
>>
>>
>> 2013/3/22 Rik Cabanier <cabanier@gmail.com>
>>
>>>
>>>
>>> On Fri, Mar 22, 2013 at 1:48 AM, Robert O'Callahan <robert@ocallahan.org
>>> > wrote:
>>>
>>>> On Fri, Mar 22, 2013 at 7:48 AM, Rik Cabanier <cabanier@gmail.com>wrote:
>>>>
>>>>>  On Thu, Mar 21, 2013 at 11:38 AM, Tab Atkins Jr. <
>>>>> jackalmage@gmail.com> wrote:
>>>>>
>>>>>> Only if you actually throw it.  It's not eagerly created every call.
>>>>>>
>>>>>
>>>>> I worked a little with the mozilla code base and it seems that they
>>>>> always create the object.
>>>>> It's probably not a huge amount of overhead since it's not dynamically
>>>>> allocated.
>>>>>
>>>>
>>>> We certainly don't create a JS exception object if an exception is not
>>>> actually thrown.
>>>>
>>>
>>> If a function is marked as throwing in the IDL, doesn't it get an
>>> exception object as a parameter on the C++ side?
>>>
>>
>> No, in Mozilla's case it gets a so-called ErrorResult object,
>>
>>
>> http://dxr.mozilla.org/mozilla-central/dom/bindings/ErrorResult.h?from=ErrorResult#l34
>>
>> C++ can then decide to call its Throw() method to actually produce an
>> exception.
>
>
> Yes, that's the one I was thinking of.
>
>
Well, the argument was over whether that would be expensive. It's not (C++
object created on the stack, with its constructor just setting one integer
member to a constant -- so a few cycles at most).

Benoit

Received on Friday, 22 March 2013 16:59:51 UTC