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

Issue 6881003: Prevent deopt when assigning double values to typed arrays (Closed)

Created:
9 years, 8 months ago by danno
Modified:
9 years, 7 months ago
CC:
v8-dev
Visibility:
Public.

Description

Prevent deopt when assigning double values to typed arrays BUG=1515 TEST=

Patch Set 1 : Fixes to make ia32 tests run #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+427 lines, -270 lines) Patch
M src/arm/lithium-arm.cc View 1 chunk +3 lines, -11 lines 0 comments Download
M src/assembler.h View 2 chunks +4 lines, -0 lines 0 comments Download
M src/assembler.cc View 2 chunks +14 lines, -0 lines 0 comments Download
M src/conversions.h View 1 chunk +4 lines, -0 lines 0 comments Download
M src/conversions-inl.h View 3 chunks +37 lines, -1 line 0 comments Download
M src/hydrogen.cc View 12 chunks +42 lines, -74 lines 2 comments Download
M src/hydrogen-instructions.h View 12 chunks +84 lines, -26 lines 0 comments Download
M src/hydrogen-instructions.cc View 12 chunks +32 lines, -18 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.cc View 12 chunks +54 lines, -26 lines 0 comments Download
M src/ia32/lithium-ia32.h View 7 chunks +30 lines, -10 lines 0 comments Download
M src/ia32/lithium-ia32.cc View 20 chunks +61 lines, -69 lines 0 comments Download
M src/ia32/macro-assembler-ia32.h View 1 chunk +36 lines, -0 lines 0 comments Download
M src/ia32/stub-cache-ia32.cc View 1 chunk +1 line, -8 lines 0 comments Download
M src/objects.cc View 1 chunk +1 line, -26 lines 0 comments Download
M src/x64/lithium-codegen-x64.cc View 1 chunk +1 line, -1 line 0 comments Download
M test/cctest/test-api.cc View 2 chunks +23 lines, -0 lines 0 comments Download

Messages

Total messages: 3 (0 generated)
danno
Work in progress, but please take a look to make sure I'm not completely off-base. ...
9 years, 8 months ago (2011-04-19 12:31:43 UTC) #1
Kevin Millikin (Chromium)
+fschneider
9 years, 8 months ago (2011-04-19 13:29:29 UTC) #2
fschneider
9 years, 7 months ago (2011-05-10 10:44:52 UTC) #3
Here are some high-level comments. My worry is that it gets too complicated with
too many different representations.

http://codereview.chromium.org/6881003/diff/4001/src/hydrogen.cc
File src/hydrogen.cc (left):

http://codereview.chromium.org/6881003/diff/4001/src/hydrogen.cc#oldcode1837
src/hydrogen.cc:1837: CompareConversionUses(to_convert->at(index),
Thanks for cleaning this up!

http://codereview.chromium.org/6881003/diff/4001/src/hydrogen.cc
File src/hydrogen.cc (right):

http://codereview.chromium.org/6881003/diff/4001/src/hydrogen.cc#newcode1867
src/hydrogen.cc:1867: HPhase phase("Insert representation changes", this);
Not sure that the representation computation does the right thing. Why can you
just remove this part?

Maybe we can do something a little simpler without introducing completely
separate representations for ClampedUint8 and TruncatedInt32.

All values for ClampedUint8, int8, int16, int32, uint8 and uint16 can be
precisely represented as our current Representation::Integer32.

How about attaching the additional information to the range-information and let
the HStoreKeyedSpecialized decide whether to generate conversion code based on
the range and the representation of the input value.

This would avoid the complications with having phi-instructions and phi-uses of
even more different representations.

We still have a small problem with Uint32 values since they are outside the
int32 range - but probably we should deal with this one in a separate change
anyway.

Powered by Google App Engine
This is Rietveld 408576698