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

Unified Diff: runtime/vm/object.cc

Issue 11421024: Use fingerprint to detect changes in methods that are intrinsified. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/object.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/object.cc
===================================================================
--- runtime/vm/object.cc (revision 15200)
+++ runtime/vm/object.cc (working copy)
@@ -4197,14 +4197,14 @@
// Construct fingerprint from token stream. The token stream contains also
// arguments.
-intptr_t Function::SourceFingerprint() const {
- intptr_t result = String::Handle(Signature()).Hash();
+int32_t Function::SourceFingerprint() const {
+ uint32_t result = String::Handle(Signature()).Hash();
TokenStream::Iterator tokens_iterator(TokenStream::Handle(
Script::Handle(script()).tokens()), token_pos());
Object& obj = Object::Handle();
String& literal = String::Handle();
while (tokens_iterator.CurrentPosition() < end_token_pos()) {
- intptr_t val = 0;
+ uint32_t val = 0;
obj = tokens_iterator.CurrentToken();
if (obj.IsSmi()) {
val = Smi::Cast(obj).Value();
@@ -4215,6 +4215,8 @@
result = 31 * result + val;
tokens_iterator.Advance();
}
+ result = result & ((static_cast<intptr_t>(1) << 31) - 1);
+ ASSERT(result <= static_cast<uint32_t>(kMaxInt32));
return result;
}
@@ -9949,11 +9951,11 @@
hash_ ^= hash_ >> 11;
hash_ += hash_ << 15;
hash_ = hash_ & ((static_cast<intptr_t>(1) << bits) - 1);
- ASSERT(hash_ >= 0);
+ ASSERT(hash_ <= static_cast<uint32_t>(kMaxInt32));
return hash_ == 0 ? 1 : hash_;
}
private:
- intptr_t hash_;
+ uint32_t hash_;
};
« no previous file with comments | « runtime/vm/object.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698