Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(398)

Side by Side Diff: dart/runtime/lib/invocation_mirror_patch.dart

Issue 14066019: Change memberName and namedArguments in Invocation to use Symbol. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 class _InvocationMirror implements Invocation { 5 class _InvocationMirror implements Invocation {
6 // Constants describing the invocation type. 6 // Constants describing the invocation type.
7 // _FIELD cannot be generated by regular invocation mirrors. 7 // _FIELD cannot be generated by regular invocation mirrors.
8 static const int _METHOD = 0; 8 static const int _METHOD = 0;
9 static const int _GETTER = 1; 9 static const int _GETTER = 1;
10 static const int _SETTER = 2; 10 static const int _SETTER = 2;
(...skipping 11 matching lines...) Expand all
22 static const int _CALL_SHIFT = _TYPE_BITS; 22 static const int _CALL_SHIFT = _TYPE_BITS;
23 static const int _CALL_BITS = 2; 23 static const int _CALL_BITS = 2;
24 static const int _CALL_MASK = (1 << _CALL_BITS) - 1; 24 static const int _CALL_MASK = (1 << _CALL_BITS) - 1;
25 25
26 // Internal representation of the invocation mirror. 26 // Internal representation of the invocation mirror.
27 final String _functionName; 27 final String _functionName;
28 final List _argumentsDescriptor; 28 final List _argumentsDescriptor;
29 final List _arguments; 29 final List _arguments;
30 30
31 // External representation of the invocation mirror; populated on demand. 31 // External representation of the invocation mirror; populated on demand.
32 String _memberName; 32 Symbol _memberName;
33 int _type; 33 int _type;
34 List _positionalArguments; 34 List _positionalArguments;
35 Map<String, dynamic> _namedArguments; 35 Map<Symbol, dynamic> _namedArguments;
36 36
37 void _setMemberNameAndType() { 37 void _setMemberNameAndType() {
38 if (_functionName.startsWith("get:")) { 38 if (_functionName.startsWith("get:")) {
39 _type = _GETTER; 39 _type = _GETTER;
40 _memberName = _functionName.substring(4); 40 _memberName =
41 new _collection_dev.Symbol.unvalidated(_functionName.substring(4));
41 } else if (_functionName.startsWith("set:")) { 42 } else if (_functionName.startsWith("set:")) {
42 _type = _SETTER; 43 _type = _SETTER;
43 _memberName = _functionName.substring(4) + "="; 44 _memberName =
45 new _collection_dev.Symbol.unvalidated(
46 _functionName.substring(4) + "=");
44 } else { 47 } else {
45 _type = _METHOD; 48 _type = _METHOD;
46 _memberName = _functionName; 49 _memberName = new _collection_dev.Symbol.unvalidated(_functionName);
47 } 50 }
48 } 51 }
49 52
50 String get memberName { 53 Symbol get memberName {
51 if (_memberName == null) { 54 if (_memberName == null) {
52 _setMemberNameAndType(); 55 _setMemberNameAndType();
53 } 56 }
54 return _memberName; 57 return _memberName;
55 } 58 }
56 59
57 List get positionalArguments { 60 List get positionalArguments {
58 if (_positionalArguments == null) { 61 if (_positionalArguments == null) {
59 int numPositionalArguments = _argumentsDescriptor[1]; 62 int numPositionalArguments = _argumentsDescriptor[1];
60 // Exclude receiver. 63 // Exclude receiver.
61 _positionalArguments = _arguments.sublist(1, numPositionalArguments); 64 _positionalArguments = _arguments.sublist(1, numPositionalArguments);
62 } 65 }
63 return _positionalArguments; 66 return _positionalArguments;
64 } 67 }
65 68
66 Map<String, dynamic> get namedArguments { 69 Map<Symbol, dynamic> get namedArguments {
67 if (_namedArguments == null) { 70 if (_namedArguments == null) {
68 _namedArguments = new Map<String, dynamic>(); 71 _namedArguments = new Map<Symbol, dynamic>();
69 int numArguments = _argumentsDescriptor[0] - 1; // Exclude receiver. 72 int numArguments = _argumentsDescriptor[0] - 1; // Exclude receiver.
70 int numPositionalArguments = _argumentsDescriptor[1] - 1; 73 int numPositionalArguments = _argumentsDescriptor[1] - 1;
71 int numNamedArguments = numArguments - numPositionalArguments; 74 int numNamedArguments = numArguments - numPositionalArguments;
72 for (int i = 0; i < numNamedArguments; i++) { 75 for (int i = 0; i < numNamedArguments; i++) {
73 String arg_name = _argumentsDescriptor[2 + 2*i]; 76 String arg_name = _argumentsDescriptor[2 + 2*i];
74 var arg_value = _arguments[_argumentsDescriptor[3 + 2*i]]; 77 var arg_value = _arguments[_argumentsDescriptor[3 + 2*i]];
75 _namedArguments[arg_name] = arg_value; 78 _namedArguments[new _collection_dev.Symbol.unvalidated(arg_name)] =
79 arg_value;
76 } 80 }
77 } 81 }
78 return _namedArguments; 82 return _namedArguments;
79 } 83 }
80 84
81 bool get isMethod { 85 bool get isMethod {
82 if (_type == null) { 86 if (_type == null) {
83 _setMemberNameAndType(); 87 _setMemberNameAndType();
84 } 88 }
85 return _type == _METHOD; 89 return _type == _METHOD;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 String functionName, 124 String functionName,
121 List argumentsDescriptor, 125 List argumentsDescriptor,
122 List arguments) 126 List arguments)
123 native "InvocationMirror_invoke"; 127 native "InvocationMirror_invoke";
124 128
125 invokeOn(Object receiver) { 129 invokeOn(Object receiver) {
126 return _invoke(receiver, _functionName, _argumentsDescriptor, _arguments); 130 return _invoke(receiver, _functionName, _argumentsDescriptor, _arguments);
127 } 131 }
128 } 132 }
129 133
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698