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

Side by Side Diff: runtime/vm/code_generator_test.cc

Issue 1870343002: - Refactor Symbol allocation to expect a thread parameter. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address review feedback. Created 4 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
« no previous file with comments | « runtime/vm/code_generator.cc ('k') | runtime/vm/code_patcher_arm64_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "platform/globals.h" 5 #include "platform/globals.h"
6 6
7 #include "platform/assert.h" 7 #include "platform/assert.h"
8 #include "vm/globals.h" 8 #include "vm/globals.h"
9 #include "vm/ast.h" 9 #include "vm/ast.h"
10 #include "vm/assembler.h" 10 #include "vm/assembler.h"
(...skipping 29 matching lines...) Expand all
40 // Wrap the SmiReturnCodegen test above as a static function and call it. 40 // Wrap the SmiReturnCodegen test above as a static function and call it.
41 ArgumentListNode* no_arguments = new ArgumentListNode(kPos); 41 ArgumentListNode* no_arguments = new ArgumentListNode(kPos);
42 test->node_sequence()->Add( 42 test->node_sequence()->Add(
43 new ReturnNode(kPos, new StaticCallNode(kPos, function, no_arguments))); 43 new ReturnNode(kPos, new StaticCallNode(kPos, function, no_arguments)));
44 } 44 }
45 CODEGEN_TEST2_RUN(SimpleStaticCallCodegen, SmiReturnCodegen, Smi::New(3)) 45 CODEGEN_TEST2_RUN(SimpleStaticCallCodegen, SmiReturnCodegen, Smi::New(3))
46 46
47 47
48 // Helper to allocate and return a LocalVariable. 48 // Helper to allocate and return a LocalVariable.
49 static LocalVariable* NewTestLocalVariable(const char* name) { 49 static LocalVariable* NewTestLocalVariable(const char* name) {
50 const String& variable_name = String::ZoneHandle(Symbols::New(name)); 50 const String& variable_name = String::ZoneHandle(
51 Symbols::New(Thread::Current(), name));
51 const Type& variable_type = Type::ZoneHandle(Type::DynamicType()); 52 const Type& variable_type = Type::ZoneHandle(Type::DynamicType());
52 return new LocalVariable(kPos, variable_name, variable_type); 53 return new LocalVariable(kPos, variable_name, variable_type);
53 } 54 }
54 55
55 56
56 CODEGEN_TEST_GENERATE(ReturnParameterCodegen, test) { 57 CODEGEN_TEST_GENERATE(ReturnParameterCodegen, test) {
57 SequenceNode* node_seq = test->node_sequence(); 58 SequenceNode* node_seq = test->node_sequence();
58 const int num_params = 1; 59 const int num_params = 1;
59 LocalVariable* parameter = NewTestLocalVariable("parameter"); 60 LocalVariable* parameter = NewTestLocalVariable("parameter");
60 LocalScope* local_scope = node_seq->scope(); 61 LocalScope* local_scope = node_seq->scope();
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 SequenceNode* node_seq = test->node_sequence(); 206 SequenceNode* node_seq = test->node_sequence();
206 LiteralNode* a = 207 LiteralNode* a =
207 new LiteralNode(kPos, Double::ZoneHandle(Double::New(12.0, Heap::kOld))); 208 new LiteralNode(kPos, Double::ZoneHandle(Double::New(12.0, Heap::kOld)));
208 UnaryOpNode* neg_node = new UnaryOpNode(kPos, Token::kNEGATE, a); 209 UnaryOpNode* neg_node = new UnaryOpNode(kPos, Token::kNEGATE, a);
209 node_seq->Add(new ReturnNode(kPos, neg_node)); 210 node_seq->Add(new ReturnNode(kPos, neg_node));
210 } 211 }
211 CODEGEN_TEST_RUN(DoubleUnaryOpCodegen, Double::New(-12.0)) 212 CODEGEN_TEST_RUN(DoubleUnaryOpCodegen, Double::New(-12.0))
212 213
213 214
214 static Library& MakeTestLibrary(const char* url) { 215 static Library& MakeTestLibrary(const char* url) {
215 const String& lib_url = String::ZoneHandle(Symbols::New(url)); 216 const String& lib_url = String::ZoneHandle(Symbols::New(Thread::Current(),
217 url));
216 Library& lib = Library::ZoneHandle(Library::New(lib_url)); 218 Library& lib = Library::ZoneHandle(Library::New(lib_url));
217 lib.Register(); 219 lib.Register();
218 Library& core_lib = Library::Handle(Library::CoreLibrary()); 220 Library& core_lib = Library::Handle(Library::CoreLibrary());
219 ASSERT(!core_lib.IsNull()); 221 ASSERT(!core_lib.IsNull());
220 const Namespace& core_ns = Namespace::Handle( 222 const Namespace& core_ns = Namespace::Handle(
221 Namespace::New(core_lib, Array::Handle(), Array::Handle())); 223 Namespace::New(core_lib, Array::Handle(), Array::Handle()));
222 lib.AddImport(core_ns); 224 lib.AddImport(core_ns);
223 return lib; 225 return lib;
224 } 226 }
225 227
226 228
227 static RawClass* LookupClass(const Library& lib, const char* name) { 229 static RawClass* LookupClass(const Library& lib, const char* name) {
228 const String& cls_name = String::ZoneHandle(Symbols::New(name)); 230 const String& cls_name = String::ZoneHandle(Symbols::New(Thread::Current(),
231 name));
229 return lib.LookupClass(cls_name); 232 return lib.LookupClass(cls_name);
230 } 233 }
231 234
232 235
233 CODEGEN_TEST_GENERATE(StaticCallCodegen, test) { 236 CODEGEN_TEST_GENERATE(StaticCallCodegen, test) {
234 const char* kScriptChars = 237 const char* kScriptChars =
235 "class A {\n" 238 "class A {\n"
236 " static bar() { return 42; }\n" 239 " static bar() { return 42; }\n"
237 " static fly() { return 5; }\n" 240 " static fly() { return 5; }\n"
238 "}\n"; 241 "}\n";
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 EXPECT(ClassFinalizer::ProcessPendingClasses()); 297 EXPECT(ClassFinalizer::ProcessPendingClasses());
295 Class& cls = Class::ZoneHandle(LookupClass(lib, "A")); 298 Class& cls = Class::ZoneHandle(LookupClass(lib, "A"));
296 EXPECT(!cls.IsNull()); 299 EXPECT(!cls.IsNull());
297 300
298 String& constructor_name = String::Handle(String::New("A.")); 301 String& constructor_name = String::Handle(String::New("A."));
299 Function& constructor = 302 Function& constructor =
300 Function::ZoneHandle(cls.LookupConstructor(constructor_name)); 303 Function::ZoneHandle(cls.LookupConstructor(constructor_name));
301 EXPECT(!constructor.IsNull()); 304 EXPECT(!constructor.IsNull());
302 305
303 // The unit test creates an instance of class A and calls function 'bar'. 306 // The unit test creates an instance of class A and calls function 'bar'.
304 String& function_bar_name = String::ZoneHandle(Symbols::New("bar")); 307 String& function_bar_name = String::ZoneHandle(Symbols::New(Thread::Current(),
308 "bar"));
305 ArgumentListNode* no_arguments = new ArgumentListNode(kPos); 309 ArgumentListNode* no_arguments = new ArgumentListNode(kPos);
306 const TypeArguments& no_type_arguments = TypeArguments::ZoneHandle(); 310 const TypeArguments& no_type_arguments = TypeArguments::ZoneHandle();
307 InstanceCallNode* call_bar = new InstanceCallNode( 311 InstanceCallNode* call_bar = new InstanceCallNode(
308 kPos, 312 kPos,
309 new ConstructorCallNode( 313 new ConstructorCallNode(
310 kPos, no_type_arguments, constructor, no_arguments), 314 kPos, no_type_arguments, constructor, no_arguments),
311 function_bar_name, 315 function_bar_name,
312 no_arguments); 316 no_arguments);
313 317
314 test->node_sequence()->Add(new ReturnNode(kPos, call_bar)); 318 test->node_sequence()->Add(new ReturnNode(kPos, call_bar));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 EXPECT(!result.IsError()); 357 EXPECT(!result.IsError());
354 const GrowableObjectArray& libs = GrowableObjectArray::Handle( 358 const GrowableObjectArray& libs = GrowableObjectArray::Handle(
355 Isolate::Current()->object_store()->libraries()); 359 Isolate::Current()->object_store()->libraries());
356 ASSERT(!libs.IsNull()); 360 ASSERT(!libs.IsNull());
357 // App lib is the last one that was loaded. 361 // App lib is the last one that was loaded.
358 intptr_t num_libs = libs.Length(); 362 intptr_t num_libs = libs.Length();
359 Library& app_lib = Library::Handle(); 363 Library& app_lib = Library::Handle();
360 app_lib ^= libs.At(num_libs - 1); 364 app_lib ^= libs.At(num_libs - 1);
361 ASSERT(!app_lib.IsNull()); 365 ASSERT(!app_lib.IsNull());
362 const Class& cls = Class::Handle( 366 const Class& cls = Class::Handle(
363 app_lib.LookupClass(String::Handle(Symbols::New("A")))); 367 app_lib.LookupClass(String::Handle(Symbols::New(Thread::Current(),
368 "A"))));
364 EXPECT_EQ(cls.raw(), result.clazz()); 369 EXPECT_EQ(cls.raw(), result.clazz());
365 } 370 }
366 371
367 } // namespace dart 372 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/code_generator.cc ('k') | runtime/vm/code_patcher_arm64_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698