| Index: runtime/vm/object.cc
|
| ===================================================================
|
| --- runtime/vm/object.cc (revision 15166)
|
| +++ runtime/vm/object.cc (working copy)
|
| @@ -4190,6 +4190,30 @@
|
| }
|
|
|
|
|
| +// Construct fingerprint from token stream. The token stream contains also
|
| +// arguments.
|
| +intptr_t Function::SourceFingerprint() const {
|
| + intptr_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;
|
| + obj = tokens_iterator.CurrentToken();
|
| + if (obj.IsSmi()) {
|
| + val = Smi::Cast(obj).Value();
|
| + } else {
|
| + literal = tokens_iterator.MakeLiteralToken(obj);
|
| + val = literal.Hash();
|
| + }
|
| + result = 31 * result + val;
|
| + tokens_iterator.Advance();
|
| + }
|
| + return result;
|
| +}
|
| +
|
| +
|
| const char* Function::ToCString() const {
|
| const char* static_str = is_static() ? " static" : "";
|
| const char* abstract_str = is_abstract() ? " abstract" : "";
|
|
|