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: test/cctest/test-code-stub-assembler.cc

Issue 2035533003: Move test/cctest/compiler/test-code-stub-assembler.cc to test/cctest directory. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebasing Created 4 years, 6 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 | « test/cctest/compiler/test-code-stub-assembler.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/interface-descriptors.h" 5 #include "src/interface-descriptors.h"
6 #include "src/isolate.h" 6 #include "src/isolate.h"
7 #include "test/cctest/compiler/function-tester.h" 7 #include "test/cctest/compiler/function-tester.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
11 namespace compiler {
12 11
12 using compiler::FunctionTester;
13 using compiler::Node;
13 14
14 class CodeStubAssemblerTester : public CodeStubAssembler { 15 class CodeStubAssemblerTester : public CodeStubAssembler {
15 public: 16 public:
16 // Test generating code for a stub. 17 // Test generating code for a stub.
17 CodeStubAssemblerTester(Isolate* isolate, 18 CodeStubAssemblerTester(Isolate* isolate,
18 const CallInterfaceDescriptor& descriptor) 19 const CallInterfaceDescriptor& descriptor)
19 : CodeStubAssembler(isolate, isolate->runtime_zone(), descriptor, 20 : CodeStubAssembler(isolate, isolate->runtime_zone(), descriptor,
20 Code::ComputeFlags(Code::STUB), "test"), 21 Code::ComputeFlags(Code::STUB), "test"),
21 scope_(isolate) {} 22 scope_(isolate) {}
22 23
23 // Test generating code for a JS function (e.g. builtins). 24 // Test generating code for a JS function (e.g. builtins).
24 CodeStubAssemblerTester(Isolate* isolate, int parameter_count) 25 CodeStubAssemblerTester(Isolate* isolate, int parameter_count)
25 : CodeStubAssembler(isolate, isolate->runtime_zone(), parameter_count, 26 : CodeStubAssembler(isolate, isolate->runtime_zone(), parameter_count,
26 Code::ComputeFlags(Code::FUNCTION), "test"), 27 Code::ComputeFlags(Code::FUNCTION), "test"),
27 scope_(isolate) {} 28 scope_(isolate) {}
28 29
29 private: 30 private:
30 HandleScope scope_; 31 HandleScope scope_;
31 LocalContext context_; 32 LocalContext context_;
32 }; 33 };
33 34
34
35 TEST(SimpleSmiReturn) { 35 TEST(SimpleSmiReturn) {
36 Isolate* isolate(CcTest::InitIsolateOnce()); 36 Isolate* isolate(CcTest::InitIsolateOnce());
37 VoidDescriptor descriptor(isolate); 37 VoidDescriptor descriptor(isolate);
38 CodeStubAssemblerTester m(isolate, descriptor); 38 CodeStubAssemblerTester m(isolate, descriptor);
39 m.Return(m.SmiTag(m.Int32Constant(37))); 39 m.Return(m.SmiTag(m.Int32Constant(37)));
40 Handle<Code> code = m.GenerateCode(); 40 Handle<Code> code = m.GenerateCode();
41 FunctionTester ft(descriptor, code); 41 FunctionTester ft(descriptor, code);
42 MaybeHandle<Object> result = ft.Call(); 42 MaybeHandle<Object> result = ft.Call();
43 CHECK_EQ(37, Handle<Smi>::cast(result.ToHandleChecked())->value()); 43 CHECK_EQ(37, Handle<Smi>::cast(result.ToHandleChecked())->value());
44 } 44 }
45 45
46
47 TEST(SimpleIntPtrReturn) { 46 TEST(SimpleIntPtrReturn) {
48 Isolate* isolate(CcTest::InitIsolateOnce()); 47 Isolate* isolate(CcTest::InitIsolateOnce());
49 VoidDescriptor descriptor(isolate); 48 VoidDescriptor descriptor(isolate);
50 CodeStubAssemblerTester m(isolate, descriptor); 49 CodeStubAssemblerTester m(isolate, descriptor);
51 int test; 50 int test;
52 m.Return(m.IntPtrConstant(reinterpret_cast<intptr_t>(&test))); 51 m.Return(m.IntPtrConstant(reinterpret_cast<intptr_t>(&test)));
53 Handle<Code> code = m.GenerateCode(); 52 Handle<Code> code = m.GenerateCode();
54 FunctionTester ft(descriptor, code); 53 FunctionTester ft(descriptor, code);
55 MaybeHandle<Object> result = ft.Call(); 54 MaybeHandle<Object> result = ft.Call();
56 CHECK_EQ(reinterpret_cast<intptr_t>(&test), 55 CHECK_EQ(reinterpret_cast<intptr_t>(&test),
57 reinterpret_cast<intptr_t>(*result.ToHandleChecked())); 56 reinterpret_cast<intptr_t>(*result.ToHandleChecked()));
58 } 57 }
59 58
60
61 TEST(SimpleDoubleReturn) { 59 TEST(SimpleDoubleReturn) {
62 Isolate* isolate(CcTest::InitIsolateOnce()); 60 Isolate* isolate(CcTest::InitIsolateOnce());
63 VoidDescriptor descriptor(isolate); 61 VoidDescriptor descriptor(isolate);
64 CodeStubAssemblerTester m(isolate, descriptor); 62 CodeStubAssemblerTester m(isolate, descriptor);
65 m.Return(m.NumberConstant(0.5)); 63 m.Return(m.NumberConstant(0.5));
66 Handle<Code> code = m.GenerateCode(); 64 Handle<Code> code = m.GenerateCode();
67 FunctionTester ft(descriptor, code); 65 FunctionTester ft(descriptor, code);
68 MaybeHandle<Object> result = ft.Call(); 66 MaybeHandle<Object> result = ft.Call();
69 CHECK_EQ(0.5, Handle<HeapNumber>::cast(result.ToHandleChecked())->value()); 67 CHECK_EQ(0.5, Handle<HeapNumber>::cast(result.ToHandleChecked())->value());
70 } 68 }
71 69
72
73 TEST(SimpleCallRuntime1Arg) { 70 TEST(SimpleCallRuntime1Arg) {
74 Isolate* isolate(CcTest::InitIsolateOnce()); 71 Isolate* isolate(CcTest::InitIsolateOnce());
75 VoidDescriptor descriptor(isolate); 72 VoidDescriptor descriptor(isolate);
76 CodeStubAssemblerTester m(isolate, descriptor); 73 CodeStubAssemblerTester m(isolate, descriptor);
77 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context())); 74 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context()));
78 Node* b = m.SmiTag(m.Int32Constant(0)); 75 Node* b = m.SmiTag(m.Int32Constant(0));
79 m.Return(m.CallRuntime(Runtime::kNumberToSmi, context, b)); 76 m.Return(m.CallRuntime(Runtime::kNumberToSmi, context, b));
80 Handle<Code> code = m.GenerateCode(); 77 Handle<Code> code = m.GenerateCode();
81 FunctionTester ft(descriptor, code); 78 FunctionTester ft(descriptor, code);
82 MaybeHandle<Object> result = ft.Call(); 79 MaybeHandle<Object> result = ft.Call();
83 CHECK_EQ(0, Handle<Smi>::cast(result.ToHandleChecked())->value()); 80 CHECK_EQ(0, Handle<Smi>::cast(result.ToHandleChecked())->value());
84 } 81 }
85 82
86
87 TEST(SimpleTailCallRuntime1Arg) { 83 TEST(SimpleTailCallRuntime1Arg) {
88 Isolate* isolate(CcTest::InitIsolateOnce()); 84 Isolate* isolate(CcTest::InitIsolateOnce());
89 VoidDescriptor descriptor(isolate); 85 VoidDescriptor descriptor(isolate);
90 CodeStubAssemblerTester m(isolate, descriptor); 86 CodeStubAssemblerTester m(isolate, descriptor);
91 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context())); 87 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context()));
92 Node* b = m.SmiTag(m.Int32Constant(0)); 88 Node* b = m.SmiTag(m.Int32Constant(0));
93 m.TailCallRuntime(Runtime::kNumberToSmi, context, b); 89 m.TailCallRuntime(Runtime::kNumberToSmi, context, b);
94 Handle<Code> code = m.GenerateCode(); 90 Handle<Code> code = m.GenerateCode();
95 FunctionTester ft(descriptor, code); 91 FunctionTester ft(descriptor, code);
96 MaybeHandle<Object> result = ft.Call(); 92 MaybeHandle<Object> result = ft.Call();
97 CHECK_EQ(0, Handle<Smi>::cast(result.ToHandleChecked())->value()); 93 CHECK_EQ(0, Handle<Smi>::cast(result.ToHandleChecked())->value());
98 } 94 }
99 95
100
101 TEST(SimpleCallRuntime2Arg) { 96 TEST(SimpleCallRuntime2Arg) {
102 Isolate* isolate(CcTest::InitIsolateOnce()); 97 Isolate* isolate(CcTest::InitIsolateOnce());
103 VoidDescriptor descriptor(isolate); 98 VoidDescriptor descriptor(isolate);
104 CodeStubAssemblerTester m(isolate, descriptor); 99 CodeStubAssemblerTester m(isolate, descriptor);
105 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context())); 100 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context()));
106 Node* a = m.SmiTag(m.Int32Constant(2)); 101 Node* a = m.SmiTag(m.Int32Constant(2));
107 Node* b = m.SmiTag(m.Int32Constant(4)); 102 Node* b = m.SmiTag(m.Int32Constant(4));
108 m.Return(m.CallRuntime(Runtime::kMathPow, context, a, b)); 103 m.Return(m.CallRuntime(Runtime::kMathPow, context, a, b));
109 Handle<Code> code = m.GenerateCode(); 104 Handle<Code> code = m.GenerateCode();
110 FunctionTester ft(descriptor, code); 105 FunctionTester ft(descriptor, code);
111 MaybeHandle<Object> result = ft.Call(); 106 MaybeHandle<Object> result = ft.Call();
112 CHECK_EQ(16, Handle<Smi>::cast(result.ToHandleChecked())->value()); 107 CHECK_EQ(16, Handle<Smi>::cast(result.ToHandleChecked())->value());
113 } 108 }
114 109
115
116 TEST(SimpleTailCallRuntime2Arg) { 110 TEST(SimpleTailCallRuntime2Arg) {
117 Isolate* isolate(CcTest::InitIsolateOnce()); 111 Isolate* isolate(CcTest::InitIsolateOnce());
118 VoidDescriptor descriptor(isolate); 112 VoidDescriptor descriptor(isolate);
119 CodeStubAssemblerTester m(isolate, descriptor); 113 CodeStubAssemblerTester m(isolate, descriptor);
120 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context())); 114 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context()));
121 Node* a = m.SmiTag(m.Int32Constant(2)); 115 Node* a = m.SmiTag(m.Int32Constant(2));
122 Node* b = m.SmiTag(m.Int32Constant(4)); 116 Node* b = m.SmiTag(m.Int32Constant(4));
123 m.TailCallRuntime(Runtime::kMathPow, context, a, b); 117 m.TailCallRuntime(Runtime::kMathPow, context, a, b);
124 Handle<Code> code = m.GenerateCode(); 118 Handle<Code> code = m.GenerateCode();
125 FunctionTester ft(descriptor, code); 119 FunctionTester ft(descriptor, code);
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 376
383 a = m.UndefinedConstant(); 377 a = m.UndefinedConstant();
384 CHECK(!m.ToInt32Constant(a, value32)); 378 CHECK(!m.ToInt32Constant(a, value32));
385 CHECK(!m.ToInt64Constant(a, value64)); 379 CHECK(!m.ToInt64Constant(a, value64));
386 380
387 a = m.UndefinedConstant(); 381 a = m.UndefinedConstant();
388 CHECK(!m.ToInt32Constant(a, value32)); 382 CHECK(!m.ToInt32Constant(a, value32));
389 CHECK(!m.ToInt64Constant(a, value64)); 383 CHECK(!m.ToInt64Constant(a, value64));
390 } 384 }
391 385
392 } // namespace compiler
393 } // namespace internal 386 } // namespace internal
394 } // namespace v8 387 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-code-stub-assembler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698