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

Side by Side Diff: src/mips/interface-descriptors-mips.cc

Issue 525403003: MIPS: Multiple stubs can point to the same calling convention. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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 | « src/mips/code-stubs-mips.cc ('k') | src/mips64/code-stubs-mips64.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_MIPS 7 #if V8_TARGET_ARCH_MIPS
8 8
9 #include "src/interface-descriptors.h" 9 #include "src/interface-descriptors.h"
10 10
11 namespace v8 { 11 namespace v8 {
12 namespace internal { 12 namespace internal {
13 13
14 const Register InterfaceDescriptor::ContextRegister() { return cp; } 14 const Register InterfaceDescriptor::ContextRegister() { return cp; }
15 15
16 16
17 void CallDescriptors::InitializeForIsolate(Isolate* isolate) { 17 void CallDescriptors::InitializeForIsolate(Isolate* isolate) {
18 InitializeForIsolateAllPlatforms(isolate);
19
20 {
21 CallInterfaceDescriptor* descriptor =
22 isolate->call_descriptor(CallDescriptorKey::FastNewClosureCall);
23 Register registers[] = {cp, a2};
24 descriptor->Initialize(arraysize(registers), registers, NULL);
25 }
26 {
27 CallInterfaceDescriptor* descriptor =
28 isolate->call_descriptor(CallDescriptorKey::FastNewContextCall);
29 Register registers[] = {cp, a1};
30 descriptor->Initialize(arraysize(registers), registers, NULL);
31 }
32 {
33 CallInterfaceDescriptor* descriptor =
34 isolate->call_descriptor(CallDescriptorKey::ToNumberCall);
35 Register registers[] = {cp, a0};
36 descriptor->Initialize(arraysize(registers), registers, NULL);
37 }
38 {
39 CallInterfaceDescriptor* descriptor =
40 isolate->call_descriptor(CallDescriptorKey::NumberToStringCall);
41 Register registers[] = {cp, a0};
42 descriptor->Initialize(arraysize(registers), registers, NULL);
43 }
44 {
45 CallInterfaceDescriptor* descriptor =
46 isolate->call_descriptor(CallDescriptorKey::FastCloneShallowArrayCall);
47 Register registers[] = {cp, a3, a2, a1};
48 Representation representations[] = {
49 Representation::Tagged(), Representation::Tagged(),
50 Representation::Smi(), Representation::Tagged()};
51 descriptor->Initialize(arraysize(registers), registers, representations);
52 }
53 {
54 CallInterfaceDescriptor* descriptor =
55 isolate->call_descriptor(CallDescriptorKey::FastCloneShallowObjectCall);
56 Register registers[] = {cp, a3, a2, a1, a0};
57 descriptor->Initialize(arraysize(registers), registers, NULL);
58 }
59 {
60 CallInterfaceDescriptor* descriptor =
61 isolate->call_descriptor(CallDescriptorKey::CreateAllocationSiteCall);
62 Register registers[] = {cp, a2, a3};
63 descriptor->Initialize(arraysize(registers), registers, NULL);
64 }
65 {
66 CallInterfaceDescriptor* descriptor =
67 isolate->call_descriptor(CallDescriptorKey::RegExpConstructResultCall);
68 Register registers[] = {cp, a2, a1, a0};
69 descriptor->Initialize(arraysize(registers), registers, NULL);
70 }
71 {
72 CallInterfaceDescriptor* descriptor =
73 isolate->call_descriptor(CallDescriptorKey::TransitionElementsKindCall);
74 Register registers[] = {cp, a0, a1};
75 descriptor->Initialize(arraysize(registers), registers, NULL);
76 }
77 {
78 CallInterfaceDescriptor* descriptor = isolate->call_descriptor(
79 CallDescriptorKey::ArrayConstructorConstantArgCountCall);
80 // register state
81 // cp -- context
82 // a0 -- number of arguments
83 // a1 -- function
84 // a2 -- allocation site with elements kind
85 Register registers[] = {cp, a1, a2};
86 descriptor->Initialize(arraysize(registers), registers, NULL);
87 }
88 {
89 CallInterfaceDescriptor* descriptor =
90 isolate->call_descriptor(CallDescriptorKey::ArrayConstructorCall);
91 // stack param count needs (constructor pointer, and single argument)
92 Register registers[] = {cp, a1, a2, a0};
93 Representation representations[] = {
94 Representation::Tagged(), Representation::Tagged(),
95 Representation::Tagged(), Representation::Integer32()};
96 descriptor->Initialize(arraysize(registers), registers, representations);
97 }
98 {
99 CallInterfaceDescriptor* descriptor = isolate->call_descriptor(
100 CallDescriptorKey::InternalArrayConstructorConstantArgCountCall);
101 // register state
102 // cp -- context
103 // a0 -- number of arguments
104 // a1 -- constructor function
105 Register registers[] = {cp, a1};
106 descriptor->Initialize(arraysize(registers), registers, NULL);
107 }
108 {
109 CallInterfaceDescriptor* descriptor = isolate->call_descriptor(
110 CallDescriptorKey::InternalArrayConstructorCall);
111 // stack param count needs (constructor pointer, and single argument)
112 Register registers[] = {cp, a1, a0};
113 Representation representations[] = {Representation::Tagged(),
114 Representation::Tagged(),
115 Representation::Integer32()};
116 descriptor->Initialize(arraysize(registers), registers, representations);
117 }
118 {
119 CallInterfaceDescriptor* descriptor =
120 isolate->call_descriptor(CallDescriptorKey::CompareNilCall);
121 Register registers[] = {cp, a0};
122 descriptor->Initialize(arraysize(registers), registers, NULL);
123 }
124 {
125 CallInterfaceDescriptor* descriptor =
126 isolate->call_descriptor(CallDescriptorKey::ToBooleanCall);
127 Register registers[] = {cp, a0};
128 descriptor->Initialize(arraysize(registers), registers, NULL);
129 }
130 {
131 CallInterfaceDescriptor* descriptor =
132 isolate->call_descriptor(CallDescriptorKey::BinaryOpCall);
133 Register registers[] = {cp, a1, a0};
134 descriptor->Initialize(arraysize(registers), registers, NULL);
135 }
136 {
137 CallInterfaceDescriptor* descriptor = isolate->call_descriptor(
138 CallDescriptorKey::BinaryOpWithAllocationSiteCall);
139 Register registers[] = {cp, a2, a1, a0};
140 descriptor->Initialize(arraysize(registers), registers, NULL);
141 }
142 {
143 CallInterfaceDescriptor* descriptor =
144 isolate->call_descriptor(CallDescriptorKey::StringAddCall);
145 Register registers[] = {cp, a1, a0};
146 descriptor->Initialize(arraysize(registers), registers, NULL);
147 }
148
18 { 149 {
19 CallInterfaceDescriptor* descriptor = 150 CallInterfaceDescriptor* descriptor =
20 isolate->call_descriptor(CallDescriptorKey::ArgumentAdaptorCall); 151 isolate->call_descriptor(CallDescriptorKey::ArgumentAdaptorCall);
21 Register registers[] = { cp, // context, 152 Register registers[] = { cp, // context,
22 a1, // JSFunction 153 a1, // JSFunction
23 a0, // actual number of arguments 154 a0, // actual number of arguments
24 a2, // expected number of arguments 155 a2, // expected number of arguments
25 }; 156 };
26 Representation representations[] = { 157 Representation representations[] = {
27 Representation::Tagged(), // context 158 Representation::Tagged(), // context
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 Representation::Tagged(), // holder 214 Representation::Tagged(), // holder
84 Representation::External(), // api_function_address 215 Representation::External(), // api_function_address
85 }; 216 };
86 descriptor->Initialize(arraysize(registers), registers, representations); 217 descriptor->Initialize(arraysize(registers), registers, representations);
87 } 218 }
88 } 219 }
89 } 220 }
90 } // namespace v8::internal 221 } // namespace v8::internal
91 222
92 #endif // V8_TARGET_ARCH_MIPS 223 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/mips/code-stubs-mips.cc ('k') | src/mips64/code-stubs-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698