Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Issue 11412007: Removed a bunch of GetExistingThreadLocal calls by threading the Isolate. (Closed)

Created:
8 years, 1 month ago by Sven Panne
Modified:
8 years, 1 month ago
Reviewers:
Michael Starzinger
CC:
v8-dev
Visibility:
Public.

Description

Removed a bunch of GetExistingThreadLocal calls by threading the Isolate. For Octane, the number of calls go down from 7341629 to 1947880, i.e. they are reduced by more than 73%. TLS access is not especially cheap, so this exercise seems worthwhile. Committed: https://code.google.com/p/v8/source/detail?r=12979

Patch Set 1 #

Patch Set 2 : Removed debugging stuff #

Total comments: 8

Patch Set 3 : Addressed feedback #

Unified diffs Side-by-side diffs Delta from patch set Stats (+112 lines, -83 lines) Patch
M src/api.cc View 3 chunks +5 lines, -4 lines 0 comments Download
M src/arm/full-codegen-arm.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M src/factory.cc View 1 2 2 chunks +2 lines, -2 lines 0 comments Download
M src/handles.h View 1 1 chunk +2 lines, -2 lines 0 comments Download
M src/hydrogen.cc View 1 2 3 chunks +3 lines, -5 lines 0 comments Download
M src/ia32/full-codegen-ia32.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M src/ic.cc View 2 chunks +3 lines, -2 lines 0 comments Download
M src/ic-inl.h View 1 chunk +2 lines, -1 line 0 comments Download
M src/mips/full-codegen-mips.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M src/objects.h View 1 chunk +2 lines, -2 lines 0 comments Download
M src/objects.cc View 20 chunks +31 lines, -27 lines 0 comments Download
M src/parser.cc View 1 chunk +2 lines, -1 line 0 comments Download
M src/runtime.cc View 1 2 1 chunk +1 line, -1 line 0 comments Download
M src/stub-cache.cc View 25 chunks +48 lines, -25 lines 0 comments Download
M src/type-info.cc View 1 chunk +1 line, -1 line 0 comments Download
M src/variables.h View 1 chunk +2 lines, -2 lines 0 comments Download
M src/x64/full-codegen-x64.cc View 2 chunks +2 lines, -2 lines 0 comments Download

Messages

Total messages: 3 (0 generated)
Sven Panne
8 years, 1 month ago (2012-11-15 16:09:25 UTC) #1
Michael Starzinger
LGTM if comments are addressed. https://codereview.chromium.org/11412007/diff/2001/src/factory.cc File src/factory.cc (right): https://codereview.chromium.org/11412007/diff/2001/src/factory.cc#newcode1422 src/factory.cc:1422: Handle<Object> instance_template = Handle<Object>(desc->instance_template(), ...
8 years, 1 month ago (2012-11-15 21:24:25 UTC) #2
Sven Panne
8 years, 1 month ago (2012-11-16 08:24:36 UTC) #3
Landing...

https://codereview.chromium.org/11412007/diff/2001/src/factory.cc
File src/factory.cc (right):

https://codereview.chromium.org/11412007/diff/2001/src/factory.cc#newcode1422
src/factory.cc:1422: Handle<Object> instance_template =
Handle<Object>(desc->instance_template(),
On 2012/11/15 21:24:25, Michael Starzinger wrote:
> Use the handle constructor, that's easier to read I think.
> 
> Handle<Object> instance_template(desc->instance_template(), isolate());

Done. In general I like the proposed direct initialization much more, too,
because it is conceptually simpler: It is similar to a normal function call with
the usual overloading resolution, just for constructors. The previous code uses
copy initialization, which is much more tricky: Conceptually it tries to create
a temporary of the type of the LHS (possibly involving conversion
functions/operators) and uses a copy constructor to move the values into the
LHS. Luckily enough, GCC is clever enough to avoid the intermediate steps, but
why should we make things more complicated than necessary? :-)

https://codereview.chromium.org/11412007/diff/2001/src/hydrogen.cc
File src/hydrogen.cc (right):

https://codereview.chromium.org/11412007/diff/2001/src/hydrogen.cc#newcode3240
src/hydrogen.cc:3240: Handle<Object>
maybe_type_info(unoptimized_code->type_feedback_info(),
On 2012/11/15 21:24:25, Michael Starzinger wrote:
> I know this isn't your change, it must be something pretty recent. But I
really
> don't like this maybe-handle pattern. The following is much easier to read and
> doesn't need an explicit isolate parameter.
> 
> Handle<TypeFeedbackInfo> type_info(
>     TypeFeedbackInfo::cast(unoptimized_code->type_feedback_info()));

Done.

https://codereview.chromium.org/11412007/diff/2001/src/hydrogen.cc#newcode7119
src/hydrogen.cc:7119: Handle<Object>
maybe_type_info(unoptimized_code->type_feedback_info(),
On 2012/11/15 21:24:25, Michael Starzinger wrote:
> Likewise.

Done.

https://codereview.chromium.org/11412007/diff/2001/src/runtime.cc
File src/runtime.cc (right):

https://codereview.chromium.org/11412007/diff/2001/src/runtime.cc#newcode3156
src/runtime.cc:3156: Handle<String>
empty_string(isolate->heap()->empty_string());
On 2012/11/15 21:24:25, Michael Starzinger wrote:
> Just use "Handle<String> empty_string = isolate->factory()->empty_string();"
> here, saves the handle allocation completely.

Done.

Powered by Google App Engine
This is Rietveld 408576698