// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. patch class Object { // Helpers used to implement hashCode. If a hashCode is used we remember it // using an Expando object. A new hashCode value is calculated using a Random // number generator. static Expando _hashCodeExp = new Expando("Object.hashCode"); static Random _hashCodeRnd = new Random(); /* patch */ int get hashCode { if (this == null) { return 2011; // The year Dart was announced and a prime. } var result = _hashCodeExp[this]; if (result == null) { result = _hashCodeRnd.nextInt(0x40000000); // Stay in Smi range. _hashCodeExp[this] = result; } return result; } /* patch */ String toString() native "Object_toString"; // A statically dispatched version of Object.toString. static String _toString(obj) native "Object_toString"; _noSuchMethod(bool isMethod, String memberName, List arguments, Map namedArguments) native "Object_noSuchMethod"; /* patch */ noSuchMethod(InvocationMirror invocation) { return _noSuchMethod(invocation.isMethod, invocation.memberName, invocation.positionalArguments, invocation.namedArguments); } // Call this function instead of inlining instanceof, thus collecting // type feedback and reducing code size of unoptimized code. _instanceOf(instantiator, instantiator_type_arguments, type, bool negate) native "Object_instanceOf"; /* patch */ Type get runtimeType native "Object_runtimeType"; }