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

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

Issue 10375017: Remove old x64 code generator. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 7 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
« no previous file with comments | « no previous file | runtime/vm/code_generator_x64.h » ('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/assert.h" 5 #include "platform/assert.h"
6 #include "vm/globals.h" 6 #include "vm/globals.h"
7 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) 7 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
8 8
9 #include "vm/ast.h" 9 #include "vm/ast.h"
10 #include "vm/assembler.h" 10 #include "vm/assembler.h"
11 #include "vm/code_descriptors.h" 11 #include "vm/code_descriptors.h"
12 #include "vm/code_generator.h" 12 #include "vm/compiler.h"
13 #include "vm/dart_entry.h" 13 #include "vm/dart_entry.h"
14 #include "vm/native_entry.h" 14 #include "vm/native_entry.h"
15 #include "vm/parser.h"
15 #include "vm/unit_test.h" 16 #include "vm/unit_test.h"
16 17
17 namespace dart { 18 namespace dart {
18 19
19 static const intptr_t kPos = Scanner::kDummyTokenIndex; 20 static const intptr_t kPos = Scanner::kDummyTokenIndex;
20 21
21 22
22 CODEGEN_TEST_GENERATE(StackmapCodegen, test) { 23 CODEGEN_TEST_GENERATE(StackmapCodegen, test) {
23 Assembler assembler; 24 Assembler assembler;
24 const String& function_name = String::ZoneHandle(String::NewSymbol("test")); 25 const String& function_name = String::ZoneHandle(String::NewSymbol("test"));
(...skipping 19 matching lines...) Expand all
44 parsed_function.set_instantiator(NULL); 45 parsed_function.set_instantiator(NULL);
45 parsed_function.set_default_parameter_values(Array::Handle()); 46 parsed_function.set_default_parameter_values(Array::Handle());
46 parsed_function.AllocateVariables(); 47 parsed_function.AllocateVariables();
47 bool retval; 48 bool retval;
48 Isolate* isolate = Isolate::Current(); 49 Isolate* isolate = Isolate::Current();
49 EXPECT(isolate != NULL); 50 EXPECT(isolate != NULL);
50 LongJump* base = isolate->long_jump_base(); 51 LongJump* base = isolate->long_jump_base();
51 LongJump jump; 52 LongJump jump;
52 isolate->set_long_jump_base(&jump); 53 isolate->set_long_jump_base(&jump);
53 if (setjmp(*jump.Set()) == 0) { 54 if (setjmp(*jump.Set()) == 0) {
54 CodeGenerator code_gen(&assembler, parsed_function);
55
56 // Build some stack map entries. 55 // Build some stack map entries.
57 StackmapBuilder* builder = new StackmapBuilder(); 56 StackmapBuilder* builder = new StackmapBuilder();
58 EXPECT(builder != NULL); 57 EXPECT(builder != NULL);
59 builder->SetSlotAsObject(0); 58 builder->SetSlotAsObject(0);
60 EXPECT(builder->IsSlotObject(0)); 59 EXPECT(builder->IsSlotObject(0));
61 builder->AddEntry(0); // Add a stack map entry at pc offset 0. 60 builder->AddEntry(0); // Add a stack map entry at pc offset 0.
62 builder->SetSlotAsValue(1); 61 builder->SetSlotAsValue(1);
63 EXPECT(!builder->IsSlotObject(1)); 62 EXPECT(!builder->IsSlotObject(1));
64 builder->SetSlotAsObject(2); 63 builder->SetSlotAsObject(2);
65 builder->AddEntry(1); // Add a stack map entry at pc offset 1. 64 builder->AddEntry(1); // Add a stack map entry at pc offset 1.
66 EXPECT(builder->IsSlotObject(2)); 65 EXPECT(builder->IsSlotObject(2));
67 builder->SetSlotRangeAsObject(3, 5); 66 builder->SetSlotRangeAsObject(3, 5);
68 for (intptr_t i = 3; i <= 5; i++) { 67 for (intptr_t i = 3; i <= 5; i++) {
69 EXPECT(builder->IsSlotObject(i)); 68 EXPECT(builder->IsSlotObject(i));
70 } 69 }
71 builder->AddEntry(2); // Add a stack map entry at pc offset 2. 70 builder->AddEntry(2); // Add a stack map entry at pc offset 2.
72 builder->SetSlotRangeAsValue(6, 9); 71 builder->SetSlotRangeAsValue(6, 9);
73 for (intptr_t i = 6; i <= 9; i++) { 72 for (intptr_t i = 6; i <= 9; i++) {
74 EXPECT(!builder->IsSlotObject(i)); 73 EXPECT(!builder->IsSlotObject(i));
75 } 74 }
76 builder->SetSlotAsObject(10); 75 builder->SetSlotAsObject(10);
77 builder->AddEntry(3); // Add a stack map entry at pc offset 3. 76 builder->AddEntry(3); // Add a stack map entry at pc offset 3.
78 code_gen.GenerateCode(); 77
79 const char* function_fullname = function.ToFullyQualifiedCString(); 78 const Error& error =
80 const Code& code = 79 Error::Handle(Compiler::CompileParsedFunction(parsed_function));
81 Code::Handle(Code::FinalizeCode(function_fullname, &assembler)); 80 EXPECT(error.IsNull());
81 const Code& code = Code::Handle(function.CurrentCode());
82
82 const Array& stack_maps = Array::Handle(builder->FinalizeStackmaps(code)); 83 const Array& stack_maps = Array::Handle(builder->FinalizeStackmaps(code));
83 code.set_stackmaps(stack_maps); 84 code.set_stackmaps(stack_maps);
84 function.SetCode(code);
85 const Array& stack_map_list = Array::Handle(code.stackmaps()); 85 const Array& stack_map_list = Array::Handle(code.stackmaps());
86 EXPECT(!stack_map_list.IsNull()); 86 EXPECT(!stack_map_list.IsNull());
87 Stackmap& stack_map = Stackmap::Handle(); 87 Stackmap& stack_map = Stackmap::Handle();
88 EXPECT_EQ(4, stack_map_list.Length()); 88 EXPECT_EQ(4, stack_map_list.Length());
89 89
90 // Validate the first stack map entry. 90 // Validate the first stack map entry.
91 stack_map ^= stack_map_list.At(0); 91 stack_map ^= stack_map_list.At(0);
92 EXPECT(stack_map.IsObject(0)); 92 EXPECT(stack_map.IsObject(0));
93 EXPECT_EQ(0, stack_map.MinimumBitOffset()); 93 EXPECT_EQ(0, stack_map.MinimumBitOffset());
94 EXPECT_EQ(0, stack_map.MaximumBitOffset()); 94 EXPECT_EQ(0, stack_map.MaximumBitOffset());
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 GrowableArray<const Object*> arguments; 210 GrowableArray<const Object*> arguments;
211 const Array& kNoArgumentNames = Array::Handle(); 211 const Array& kNoArgumentNames = Array::Handle();
212 Object& result = Object::Handle(); 212 Object& result = Object::Handle();
213 result = DartEntry::InvokeStatic(function_foo, arguments, kNoArgumentNames); 213 result = DartEntry::InvokeStatic(function_foo, arguments, kNoArgumentNames);
214 EXPECT(!result.IsError()); 214 EXPECT(!result.IsError());
215 } 215 }
216 216
217 } // namespace dart 217 } // namespace dart
218 218
219 #endif // defined TARGET_ARCH_IA32 || defined(TARGET_ARCH_X64) 219 #endif // defined TARGET_ARCH_IA32 || defined(TARGET_ARCH_X64)
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/code_generator_x64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698