Index: tool/input_sdk/private/ddc_runtime/classes.dart |
diff --git a/tool/input_sdk/private/ddc_runtime/classes.dart b/tool/input_sdk/private/ddc_runtime/classes.dart |
index 722aa0c0979807294cf8da9c50684c00bb1b295f..ae3f863d4b668df9fc1dcb56e07aa7b1a0fb5c1e 100644 |
--- a/tool/input_sdk/private/ddc_runtime/classes.dart |
+++ b/tool/input_sdk/private/ddc_runtime/classes.dart |
@@ -280,11 +280,6 @@ defineExtensionNames(names) => |
JS('', '#.forEach(#)', names, getExtensionSymbol); |
-/// A map from peer class prototypes to the Dart class prototype. This is used |
-/// to recognize when Dart subclass inheritance corresponds to JavaScript |
-/// prototype inheritance. |
-final _installedDartPeers = JS('', 'new Map()'); |
- |
/// Install properties in prototype-first order. Properties / descriptors from |
/// more specific types should overwrite ones from less specific types. |
void _installProperties(jsProto, extProto) { |
@@ -293,13 +288,12 @@ void _installProperties(jsProto, extProto) { |
// constructor. |
var coreObjProto = JS('', '#.prototype', Object); |
+ var parentsExtension = |
+ JS('', '(#.__proto__)[#]', jsProto, _extensionType); |
var installedParent = |
- JS('', '#.get(#.__proto__)', _installedDartPeers, jsProto); |
+ JS('', '# && #.prototype', parentsExtension, parentsExtension); |
_installProperties2(jsProto, extProto, coreObjProto, installedParent); |
- |
- // Mark this jsProto as being the prototype for the extension class. |
- JS('', '#.set(#, #)', _installedDartPeers, jsProto, extProto); |
} |
void _installProperties2(jsProto, extProto, coreObjProto, installedParent) { |