Sure, this is by design.

You cannot keep that info around after deprecating without added memory and
possibly unnecessary performance overhead (and likely the info gets thrown
away before it's used).

Does it incur any measurable overhead after booting up?
On Oct 29, 2013 12:59 PM, <[email protected]> wrote:

> Status: Accepted
> Owner: [email protected]
> CC: [email protected]
> Labels: Type-Bug Priority-Medium
>
> New issue 2974 by [email protected]: Repeated redefinition of
> functions in an object leads to different maps
> http://code.google.com/p/v8/**issues/detail?id=2974<http://code.google.com/p/v8/issues/detail?id=2974>
>
> Consider following test case:
>
> function f(o) {  o.z = 1; }
> var loops = 5;
>
> for (var j = 0; j < 5; j++) {
>   print("\n=====================**==============\n");
>   o = { };
>   o.a = function() { };
>   o.b = function() { };
>   o.c = function() { };
>   o.d = function() { };
>   o.e = function() { };
>   o.z = 0;
>   %DebugPrint(o);
>   for (var i = 0; i < 10000; i++) f(o);
> }
>
>
> This emulates the behavior of running audio-oscillator several times. The
> function f is optimized in every loop, and deopted in the following loop
> because object o has a different map. The reason is that, when we start out
> with map A0, the first run of the loop looks like this regarding map
> transitions:
>
> A0: {} -> A1 { a: constant } -> A2 { a: constant, b: constant } -> A3 { a:
> constant, b: constant, c: constant } -> ...
>
> In the second loop, we assign o.a again, which causes a to become a field
> instead of constant.
>
> A0: {} -> B1 { a: field } -> B2 { a: field, b: constant } -> B3 { a:
> field, b: constant, c: constant } -> ...
>
> In the third loop:
>
> A0: {} -> B1 { a: field } -> C2 { a: field, b: field } -> B3 { a: field,
> b: field, c: constant } -> ...
>
> So we figure out that we should use fields instead of constants one by
> one, causing map changes all the time.
>
>
> Calling JSObject::AddFastProperty instead of JSObject::AddConstantProperty
> in JSObject::AddProperty (as a hack) fixes this problem.
>
> --
> You received this message because this project is configured to send all
> issue notifications to this address.
> You may adjust your notification preferences at:
> https://code.google.com/**hosting/settings<https://code.google.com/hosting/settings>
>
> --
> --
> v8-dev mailing list
> [email protected]
> http://groups.google.com/**group/v8-dev<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+unsubscribe@**googlegroups.com<v8-dev%[email protected]>
> .
> For more options, visit 
> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
> .
>

-- 
-- 
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/groups/opt_out.

Reply via email to