OLD | NEW |
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 #include "platform/assert.h" | 5 #include "platform/assert.h" |
6 #include "vm/assembler.h" | 6 #include "vm/assembler.h" |
7 #include "vm/class_finalizer.h" | 7 #include "vm/class_finalizer.h" |
8 #include "vm/compiler.h" | 8 #include "vm/compiler.h" |
9 #include "vm/dart_entry.h" | 9 #include "vm/dart_entry.h" |
10 #include "vm/object.h" | 10 #include "vm/object.h" |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 const int kNumArguments = 2; | 101 const int kNumArguments = 2; |
102 const Array& kNoArgumentNames = Array::Handle(); | 102 const Array& kNoArgumentNames = Array::Handle(); |
103 const Function& function = Function::Handle( | 103 const Function& function = Function::Handle( |
104 Resolver::ResolveStatic(library, | 104 Resolver::ResolveStatic(library, |
105 class_name, | 105 class_name, |
106 static_function_name, | 106 static_function_name, |
107 kNumArguments, | 107 kNumArguments, |
108 kNoArgumentNames, | 108 kNoArgumentNames, |
109 kResolveType)); | 109 kResolveType)); |
110 EXPECT(!function.IsNull()); | 110 EXPECT(!function.IsNull()); |
111 GrowableArray<const Object*> arguments(2); | 111 const Array& args = Array::Handle(Array::New(kNumArguments)); |
112 const String& arg0 = String::Handle(String::New("junk")); | 112 const String& arg0 = String::Handle(String::New("junk")); |
113 arguments.Add(&arg0); | 113 args.SetAt(0, arg0); |
114 const Smi& arg1 = Smi::Handle(Smi::New(kTestValue)); | 114 const Smi& arg1 = Smi::Handle(Smi::New(kTestValue)); |
115 arguments.Add(&arg1); | 115 args.SetAt(1, arg1); |
116 const Smi& retval = Smi::Handle( | 116 const Smi& retval = Smi::Handle( |
117 reinterpret_cast<RawSmi*>( | 117 reinterpret_cast<RawSmi*>(DartEntry::InvokeStatic(function, args))); |
118 DartEntry::InvokeStatic(function, arguments, kNoArgumentNames))); | |
119 EXPECT_EQ(kTestValue, retval.Value()); | 118 EXPECT_EQ(kTestValue, retval.Value()); |
120 } | 119 } |
121 | 120 |
122 // Now try to resolve a static function with invalid argument count. | 121 // Now try to resolve a static function with invalid argument count. |
123 { | 122 { |
124 const int kNumArguments = 1; | 123 const int kNumArguments = 1; |
125 const Array& kNoArgumentNames = Array::Handle(); | 124 const Array& kNoArgumentNames = Array::Handle(); |
126 const Function& bad_function = Function::Handle( | 125 const Function& bad_function = Function::Handle( |
127 Resolver::ResolveStatic(library, | 126 Resolver::ResolveStatic(library, |
128 class_name, | 127 class_name, |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 // Now try to resolve and invoke the instance function in this class. | 177 // Now try to resolve and invoke the instance function in this class. |
179 { | 178 { |
180 const int kNumPositionalArguments = 3; | 179 const int kNumPositionalArguments = 3; |
181 const int kNumNamedArguments = 0; | 180 const int kNumNamedArguments = 0; |
182 const Function& function = Function::Handle( | 181 const Function& function = Function::Handle( |
183 Resolver::ResolveDynamic(receiver, | 182 Resolver::ResolveDynamic(receiver, |
184 function_name, | 183 function_name, |
185 kNumPositionalArguments, | 184 kNumPositionalArguments, |
186 kNumNamedArguments)); | 185 kNumNamedArguments)); |
187 EXPECT(!function.IsNull()); | 186 EXPECT(!function.IsNull()); |
188 GrowableArray<const Object*> arguments; | 187 const Array& args = Array::Handle(Array::New(kNumPositionalArguments)); |
| 188 args.SetAt(0, receiver); |
189 const String& arg0 = String::Handle(String::New("junk")); | 189 const String& arg0 = String::Handle(String::New("junk")); |
190 arguments.Add(&arg0); | 190 args.SetAt(1, arg0); |
191 const Smi& arg1 = Smi::Handle(Smi::New(kTestValue)); | 191 const Smi& arg1 = Smi::Handle(Smi::New(kTestValue)); |
192 arguments.Add(&arg1); | 192 args.SetAt(2, arg1); |
193 const Array& kNoArgumentNames = Array::Handle(); | |
194 const Smi& retval = Smi::Handle( | 193 const Smi& retval = Smi::Handle( |
195 reinterpret_cast<RawSmi*>(DartEntry::InvokeDynamic(receiver, | 194 reinterpret_cast<RawSmi*>(DartEntry::InvokeDynamic(function, args))); |
196 function, | |
197 arguments, | |
198 kNoArgumentNames))); | |
199 EXPECT_EQ(kTestValue, retval.Value()); | 195 EXPECT_EQ(kTestValue, retval.Value()); |
200 } | 196 } |
201 | 197 |
202 // Now try to resolve an instance function with invalid argument count. | 198 // Now try to resolve an instance function with invalid argument count. |
203 { | 199 { |
204 const int kNumPositionalArguments = 1; | 200 const int kNumPositionalArguments = 1; |
205 const int kNumNamedArguments = 0; | 201 const int kNumNamedArguments = 0; |
206 const Function& bad_function = Function::Handle( | 202 const Function& bad_function = Function::Handle( |
207 Resolver::ResolveDynamic(receiver, | 203 Resolver::ResolveDynamic(receiver, |
208 function_name, | 204 function_name, |
(...skipping 13 matching lines...) Expand all Loading... |
222 super_function_name, | 218 super_function_name, |
223 kNumPositionalArguments, | 219 kNumPositionalArguments, |
224 kNumNamedArguments)); | 220 kNumNamedArguments)); |
225 EXPECT(!super_function.IsNull()); | 221 EXPECT(!super_function.IsNull()); |
226 } | 222 } |
227 } | 223 } |
228 | 224 |
229 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 225 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
230 | 226 |
231 } // namespace dart | 227 } // namespace dart |
OLD | NEW |