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

Issue 10979050: Ensure that hashCode and runtimeType work on null. (Closed)

Created:
8 years, 2 months ago by Lasse Reichstein Nielsen
Modified:
8 years, 2 months ago
Reviewers:
ahe, ngeoffray, kasperl
CC:
reviews_dartlang.org
Visibility:
Public.

Description

Ensure that hashCode and runtimeType work on null. BUG=5510 Committed: https://code.google.com/p/dart/source/detail?r=12948

Patch Set 1 #

Total comments: 12

Patch Set 2 : Fix HashMap. Update bad expectation. #

Total comments: 5

Patch Set 3 : And Nicolas' comments too. #

Total comments: 3

Patch Set 4 : Addressed review comments. #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+81 lines, -6 lines) Patch
M lib/compiler/implementation/lib/interceptors.dart View 1 2 3 chunks +13 lines, -2 lines 1 comment Download
M lib/compiler/implementation/ssa/builder.dart View 1 chunk +2 lines, -0 lines 0 comments Download
M lib/core/map.dart View 1 1 chunk +1 line, -1 line 0 comments Download
M lib/core/object.dart View 1 2 3 1 chunk +0 lines, -1 line 0 comments Download
M lib/coreimpl/hash_map_set.dart View 1 3 chunks +3 lines, -1 line 0 comments Download
M runtime/lib/object_patch.dart View 1 chunk +3 lines, -0 lines 1 comment Download
M tests/co19/co19-dart2js.status View 1 2 chunks +1 line, -1 line 0 comments Download
M tests/corelib/corelib.status View 1 2 3 2 chunks +4 lines, -0 lines 0 comments Download
A tests/corelib/null_nosuchmethod_test.dart View 1 2 3 1 chunk +22 lines, -0 lines 0 comments Download
A tests/corelib/null_test.dart View 1 2 3 1 chunk +32 lines, -0 lines 0 comments Download

Messages

Total messages: 14 (0 generated)
Lasse Reichstein Nielsen
8 years, 2 months ago (2012-09-27 07:45:46 UTC) #1
kasperl
LGTM. https://codereview.chromium.org/10979050/diff/1/tests/corelib/null.dart File tests/corelib/null.dart (right): https://codereview.chromium.org/10979050/diff/1/tests/corelib/null.dart#newcode24 tests/corelib/null.dart:24: // var nsm = null.noSuchMethod; File a bug ...
8 years, 2 months ago (2012-09-27 08:09:38 UTC) #2
ngeoffray
https://codereview.chromium.org/10979050/diff/1/lib/compiler/implementation/lib/interceptors.dart File lib/compiler/implementation/lib/interceptors.dart (right): https://codereview.chromium.org/10979050/diff/1/lib/compiler/implementation/lib/interceptors.dart#newcode622 lib/compiler/implementation/lib/interceptors.dart:622: if (receiver is !String) return UNINTERCEPTED(receiver.hashCode()); Don't forget JS ...
8 years, 2 months ago (2012-09-27 08:36:54 UTC) #3
Lasse Reichstein Nielsen
Turns out making null hashable changes the behavior of HashMap, which relied on null.hashCode() to ...
8 years, 2 months ago (2012-09-27 09:32:35 UTC) #4
ahe
http://codereview.chromium.org/10979050/diff/6001/lib/core/map.dart File lib/core/map.dart (right): http://codereview.chromium.org/10979050/diff/6001/lib/core/map.dart#newcode7 lib/core/map.dart:7: * Null values are supported, but null keys are ...
8 years, 2 months ago (2012-09-27 09:38:51 UTC) #5
Lasse Reichstein Nielsen
http://codereview.chromium.org/10979050/diff/1/lib/compiler/implementation/lib/interceptors.dart File lib/compiler/implementation/lib/interceptors.dart (right): http://codereview.chromium.org/10979050/diff/1/lib/compiler/implementation/lib/interceptors.dart#newcode622 lib/compiler/implementation/lib/interceptors.dart:622: if (receiver is !String) return UNINTERCEPTED(receiver.hashCode()); And bool. Yey. ...
8 years, 2 months ago (2012-09-27 09:55:37 UTC) #6
ahe
http://codereview.chromium.org/10979050/diff/6001/lib/core/map.dart File lib/core/map.dart (right): http://codereview.chromium.org/10979050/diff/6001/lib/core/map.dart#newcode7 lib/core/map.dart:7: * Null values are supported, but null keys are ...
8 years, 2 months ago (2012-09-27 10:17:21 UTC) #7
Lasse Reichstein Nielsen
http://codereview.chromium.org/10979050/diff/6001/lib/core/map.dart File lib/core/map.dart (right): http://codereview.chromium.org/10979050/diff/6001/lib/core/map.dart#newcode7 lib/core/map.dart:7: * Null values are supported, but null keys are ...
8 years, 2 months ago (2012-09-27 10:35:53 UTC) #8
ahe
http://codereview.chromium.org/10979050/diff/6001/lib/core/map.dart File lib/core/map.dart (right): http://codereview.chromium.org/10979050/diff/6001/lib/core/map.dart#newcode7 lib/core/map.dart:7: * Null values are supported, but null keys are ...
8 years, 2 months ago (2012-09-27 10:45:33 UTC) #9
Lasse Reichstein Nielsen
I'll make a bug report on Maps not accepting null as key.
8 years, 2 months ago (2012-09-27 10:51:45 UTC) #10
ahe
http://codereview.chromium.org/10979050/diff/7010/tests/corelib/corelib.status File tests/corelib/corelib.status (right): http://codereview.chromium.org/10979050/diff/7010/tests/corelib/corelib.status#newcode51 tests/corelib/corelib.status:51: null_test: Fail # Bug 5513 If dart2js is not ...
8 years, 2 months ago (2012-09-27 11:00:24 UTC) #11
ngeoffray
LGTM http://codereview.chromium.org/10979050/diff/7010/tests/corelib/null_test.dart File tests/corelib/null_test.dart (right): http://codereview.chromium.org/10979050/diff/7010/tests/corelib/null_test.dart#newcode36 tests/corelib/null_test.dart:36: var nsm = null.noSuchMethod; Maybe you can remove ...
8 years, 2 months ago (2012-09-27 11:00:29 UTC) #12
Lasse Reichstein Nielsen
http://codereview.chromium.org/10979050/diff/7010/tests/corelib/null_test.dart File tests/corelib/null_test.dart (right): http://codereview.chromium.org/10979050/diff/7010/tests/corelib/null_test.dart#newcode36 tests/corelib/null_test.dart:36: var nsm = null.noSuchMethod; Done.
8 years, 2 months ago (2012-09-27 11:25:13 UTC) #13
ahe
8 years, 2 months ago (2012-09-27 11:30:54 UTC) #14
LGTM

http://codereview.chromium.org/10979050/diff/4005/lib/compiler/implementation...
File lib/compiler/implementation/lib/interceptors.dart (right):

http://codereview.chromium.org/10979050/diff/4005/lib/compiler/implementation...
lib/compiler/implementation/lib/interceptors.dart:622: if (receiver is bool)
return receiver ? 0x40377024 : 0xc18c0076;
How and why did you pick these numbers?
I think both numbers are larger than 0x1fffffff which may cause performance
problems.

http://codereview.chromium.org/10979050/diff/4005/runtime/lib/object_patch.dart
File runtime/lib/object_patch.dart (right):

http://codereview.chromium.org/10979050/diff/4005/runtime/lib/object_patch.da...
runtime/lib/object_patch.dart:29: /* patch */ Type get runtimeType => null;
Perhaps you should throw an exception instead.

Powered by Google App Engine
This is Rietveld 408576698