blob: 22f67d30ac9238390012b59fb44aaabf195557d1 [file] [log] [blame]
// Copyright (c) 2013, 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.
import 'dart:_js_primitives' show printString;
import 'dart:_js_helper' show patch;
import 'dart:_interceptors' show JSArray;
import 'dart:_foreign_helper' show JS;
@patch
class Symbol implements core.Symbol {
@patch
const Symbol(String name)
: this._name = name, this._nativeSymbol = null;
@patch
const Symbol.es6(String name, dynamic nativeSymbol)
: this._name = name, this._nativeSymbol = nativeSymbol;
@patch
int get hashCode {
int hash = JS('int|Null', '#._hashCode', this);
if (hash != null) return hash;
const arbitraryPrime = 664597;
hash = 0x1fffffff & (arbitraryPrime * _name.hashCode);
JS('', '#._hashCode = #', this, hash);
return hash;
}
}
@patch
void printToConsole(String line) {
printString('$line');
}
@patch
List/*<E>*/ makeListFixedLength/*<E>*/(List/*<E>*/ growableList) {
JSArray.markFixedList(growableList);
return growableList;
}
@patch
List/*<E>*/ makeFixedListUnmodifiable/*<E>*/(List/*<E>*/ fixedLengthList) {
JSArray.markUnmodifiableList(fixedLengthList);
return fixedLengthList;
}