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

Issue 1148943004: VM: Fix bugs with missing deoptimization environment and int32x4 constructor (Closed)

Created:
5 years, 7 months ago by Florian Schneider
Modified:
5 years, 6 months ago
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Base URL:
git@github.com:dart-lang/sdk.git@master
Target Ref:
refs/heads/master
Visibility:
Public.

Description

VM: Fix bugs with missing deoptimization environment and int32x4 constructor It can occur that we don't have exact type information at UnboxUint32 instructions, but range information concludes that the instruction can't deoptimize. In this case, we can assume the input must be a smi or mint if the range fits into mint range. The generated coe for this case was missing on x64 and arm64. It was already added for ia32, ARM and MIPS (see https://codereview.chromium.org//770303002) The optimized instruction of the Int32x4 constructor was incorrectly using uint32 as input representation, instead of int32. R=iposva@google.com, vegorov@google.com Committed: https://github.com/dart-lang/sdk/commit/96e4c4d3c6dac4a217356f785c95afbdf7aa51b1

Patch Set 1 #

Patch Set 2 : #

Patch Set 3 : fixed more typed data bugs #

Total comments: 3

Patch Set 4 : addressed comment #

Unified diffs Side-by-side diffs Delta from patch set Stats (+38 lines, -8 lines) Patch
M runtime/lib/typed_data.dart View 1 2 2 chunks +2 lines, -2 lines 0 comments Download
M runtime/vm/intermediate_language.h View 2 chunks +2 lines, -6 lines 0 comments Download
M runtime/vm/intermediate_language.cc View 1 2 3 1 chunk +12 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language_arm64.cc View 1 chunk +11 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language_x64.cc View 1 chunk +11 lines, -0 lines 0 comments Download

Messages

Total messages: 7 (2 generated)
Florian Schneider
5 years, 7 months ago (2015-05-27 15:07:23 UTC) #2
Ivan Posva
LGTM -ip https://codereview.chromium.org/1148943004/diff/40001/runtime/lib/typed_data.dart File runtime/lib/typed_data.dart (right): https://codereview.chromium.org/1148943004/diff/40001/runtime/lib/typed_data.dart#newcode1269 runtime/lib/typed_data.dart:1269: _setUint32(index * Uint32List.BYTES_PER_ELEMENT, value); Thanks!
5 years, 7 months ago (2015-05-27 15:57:53 UTC) #4
Vyacheslav Egorov (Google)
lgtm https://codereview.chromium.org/1148943004/diff/40001/runtime/vm/intermediate_language.cc File runtime/vm/intermediate_language.cc (right): https://codereview.chromium.org/1148943004/diff/40001/runtime/vm/intermediate_language.cc#newcode1268 runtime/vm/intermediate_language.cc:1268: if (value_range != NULL && no need for ...
5 years, 7 months ago (2015-05-27 16:17:35 UTC) #5
Florian Schneider
Committed patchset #4 (id:60001) manually as 96e4c4d3c6dac4a217356f785c95afbdf7aa51b1 (presubmit successful).
5 years, 6 months ago (2015-05-28 08:09:56 UTC) #6
Florian Schneider
5 years, 6 months ago (2015-05-28 08:11:09 UTC) #7
Message was sent while issue was closed.
https://codereview.chromium.org/1148943004/diff/40001/runtime/vm/intermediate...
File runtime/vm/intermediate_language.cc (right):

https://codereview.chromium.org/1148943004/diff/40001/runtime/vm/intermediate...
runtime/vm/intermediate_language.cc:1268: if (value_range != NULL &&
On 2015/05/27 16:17:35, Vyacheslav Egorov (Google) wrote:
> no need for != NULL check. Fits does it for you (it calls IsUnknown which
checks
> for NULL)
> 
> you can just
> 
> return !RangeUtils::Fits(..., RangeBoundary::kRangeBoundaryInt64)
> 
> On the other hand RangeUtils::Fits(range, RangeBoundary::kRangeBoundaryInt64)
is
> equivalent to !Range::IsUnknown(range) because we never assign infinity ranges
> to instructions, we only use them during range calculations. 

Done.

Powered by Google App Engine
This is Rietveld 408576698