| Index: runtime/lib/regexp_patch.dart | 
| diff --git a/runtime/lib/regexp_patch.dart b/runtime/lib/regexp_patch.dart | 
| index 118b875d4bdacbd82bd80c7a69f84ec6eb59e928..d8e622aa7e0f7db3aac22e1f7e4f1d769521f812 100644 | 
| --- a/runtime/lib/regexp_patch.dart | 
| +++ b/runtime/lib/regexp_patch.dart | 
| @@ -8,19 +8,19 @@ patch class RegExp { | 
| /* patch */ factory RegExp(String source, | 
| {bool multiLine: false, | 
| bool caseSensitive: true}) { | 
| -    _JSSyntaxRegExpHashKey key = new _JSSyntaxRegExpHashKey( | 
| +    _RegExpHashKey key = new _RegExpHashKey( | 
| source, multiLine, caseSensitive); | 
| -    _JSSyntaxRegExpHashValue value = _cache[key]; | 
| +    _RegExpHashValue value = _cache[key]; | 
|  | 
| if (value == null) { | 
| if (_cache.length > _MAX_CACHE_SIZE) { | 
| -        _JSSyntaxRegExpHashKey lastKey = _recentlyUsed.last; | 
| +        _RegExpHashKey lastKey = _recentlyUsed.last; | 
| lastKey.unlink(); | 
| _cache.remove(lastKey); | 
| } | 
|  | 
| -      value = new _JSSyntaxRegExpHashValue( | 
| -          new _JSSyntaxRegExp(source, | 
| +      value = new _RegExpHashValue( | 
| +          new _RegExp(source, | 
| multiLine: multiLine, | 
| caseSensitive: caseSensitive), | 
| key); | 
| @@ -47,24 +47,24 @@ patch class RegExp { | 
| // TODO(zerny): Use self-sizing cache similar to _AccessorCache in | 
| // mirrors_impl.dart. | 
| static const int _MAX_CACHE_SIZE = 256; | 
| -  static final Map<_JSSyntaxRegExpHashKey, _JSSyntaxRegExpHashValue> _cache = | 
| -      new HashMap<_JSSyntaxRegExpHashKey, _JSSyntaxRegExpHashValue>(); | 
| -  static final LinkedList<_JSSyntaxRegExpHashKey> _recentlyUsed = | 
| -      new LinkedList<_JSSyntaxRegExpHashKey>(); | 
| +  static final Map<_RegExpHashKey, _RegExpHashValue> _cache = | 
| +      new HashMap<_RegExpHashKey, _RegExpHashValue>(); | 
| +  static final LinkedList<_RegExpHashKey> _recentlyUsed = | 
| +      new LinkedList<_RegExpHashKey>(); | 
| } | 
|  | 
|  | 
| // Represents both a key in the regular expression cache as well as its | 
| // corresponding entry in the LRU list. | 
| -class _JSSyntaxRegExpHashKey extends LinkedListEntry<_JSSyntaxRegExpHashKey> { | 
| +class _RegExpHashKey extends LinkedListEntry<_RegExpHashKey> { | 
| final String pattern; | 
| final bool multiLine; | 
| final bool caseSensitive; | 
|  | 
| -  _JSSyntaxRegExpHashKey(this.pattern, this.multiLine, this.caseSensitive); | 
| +  _RegExpHashKey(this.pattern, this.multiLine, this.caseSensitive); | 
|  | 
| int get hashCode => pattern.hashCode; | 
| -  bool operator==(_JSSyntaxRegExpHashKey that) { | 
| +  bool operator==(_RegExpHashKey that) { | 
| return (this.pattern == that.pattern) && | 
| (this.multiLine == that.multiLine) && | 
| (this.caseSensitive == that.caseSensitive); | 
| @@ -74,16 +74,16 @@ class _JSSyntaxRegExpHashKey extends LinkedListEntry<_JSSyntaxRegExpHashKey> { | 
|  | 
| // Represents a value in the regular expression cache. Contains a pointer | 
| // back to the key in order to access the corresponding LRU entry. | 
| -class _JSSyntaxRegExpHashValue { | 
| -  final _JSSyntaxRegExp regexp; | 
| -  final _JSSyntaxRegExpHashKey key; | 
| +class _RegExpHashValue { | 
| +  final _RegExp regexp; | 
| +  final _RegExpHashKey key; | 
|  | 
| -  _JSSyntaxRegExpHashValue(this.regexp, this.key); | 
| +  _RegExpHashValue(this.regexp, this.key); | 
| } | 
|  | 
|  | 
| -class _JSRegExpMatch implements Match { | 
| -  _JSRegExpMatch(this._regexp, this.input, this._match); | 
| +class _RegExpMatch implements Match { | 
| +  _RegExpMatch(this._regexp, this.input, this._match); | 
|  | 
| int get start => _start(0); | 
| int get end => _end(0); | 
| @@ -132,11 +132,11 @@ class _JSRegExpMatch implements Match { | 
| } | 
|  | 
|  | 
| -class _JSSyntaxRegExp implements RegExp { | 
| -  factory _JSSyntaxRegExp( | 
| +class _RegExp implements RegExp { | 
| +  factory _RegExp( | 
| String pattern, | 
| {bool multiLine: false, | 
| -       bool caseSensitive: true}) native "JSSyntaxRegExp_factory"; | 
| +       bool caseSensitive: true}) native "RegExp_factory"; | 
|  | 
| Match firstMatch(String str) { | 
| if (str is! String) throw new ArgumentError(str); | 
| @@ -144,7 +144,7 @@ class _JSSyntaxRegExp implements RegExp { | 
| if (match == null) { | 
| return null; | 
| } | 
| -    return new _JSRegExpMatch(this, str, match); | 
| +    return new _RegExpMatch(this, str, match); | 
| } | 
|  | 
| Iterable<Match> allMatches(String string, [int start = 0]) { | 
| @@ -167,7 +167,7 @@ class _JSSyntaxRegExp implements RegExp { | 
| List<int> list = _ExecuteMatch(string, start); | 
| if (list == null) return null; | 
| if (list[0] != start) return null; | 
| -    return new _JSRegExpMatch(this, string, list); | 
| +    return new _RegExpMatch(this, string, list); | 
| } | 
|  | 
| bool hasMatch(String str) { | 
| @@ -185,13 +185,13 @@ class _JSSyntaxRegExp implements RegExp { | 
| return str._substringUnchecked(match[0], match[1]); | 
| } | 
|  | 
| -  String get pattern native "JSSyntaxRegExp_getPattern"; | 
| +  String get pattern native "RegExp_getPattern"; | 
|  | 
| -  bool get isMultiLine native "JSSyntaxRegExp_getIsMultiLine"; | 
| +  bool get isMultiLine native "RegExp_getIsMultiLine"; | 
|  | 
| -  bool get isCaseSensitive native "JSSyntaxRegExp_getIsCaseSensitive"; | 
| +  bool get isCaseSensitive native "RegExp_getIsCaseSensitive"; | 
|  | 
| -  int get _groupCount native "JSSyntaxRegExp_getGroupCount"; | 
| +  int get _groupCount native "RegExp_getGroupCount"; | 
|  | 
| // Byte map of one byte characters with a 0xff if the character is a word | 
| // character (digit, letter or underscore) and 0x00 otherwise. | 
| @@ -239,11 +239,11 @@ class _JSSyntaxRegExp implements RegExp { | 
| ]; | 
|  | 
| List _ExecuteMatch(String str, int start_index) | 
| -      native "JSSyntaxRegExp_ExecuteMatch"; | 
| +      native "RegExp_ExecuteMatch"; | 
| } | 
|  | 
| class _AllMatchesIterable extends IterableBase<Match> { | 
| -  final _JSSyntaxRegExp _re; | 
| +  final _RegExp _re; | 
| final String _str; | 
| final int _start; | 
|  | 
| @@ -255,7 +255,7 @@ class _AllMatchesIterable extends IterableBase<Match> { | 
| class _AllMatchesIterator implements Iterator<Match> { | 
| final String _str; | 
| int _nextIndex; | 
| -  _JSSyntaxRegExp _re; | 
| +  _RegExp _re; | 
| Match _current; | 
|  | 
| _AllMatchesIterator(this._re, this._str, this._nextIndex); | 
| @@ -267,7 +267,7 @@ class _AllMatchesIterator implements Iterator<Match> { | 
| if (_nextIndex <= _str.length) { | 
| var match = _re._ExecuteMatch(_str, _nextIndex); | 
| if (match != null) { | 
| -        _current = new _JSRegExpMatch(_re, _str, match); | 
| +        _current = new _RegExpMatch(_re, _str, match); | 
| _nextIndex = _current.end; | 
| if (_nextIndex == _current.start) { | 
| // Zero-width match. Advance by one more. | 
|  |