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

Side by Side Diff: src/compiler/js-generic-lowering.cc

Issue 2187603004: [stubs] Using template magic to get the call interface descriptor type from callable. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@code-factory-cleanup
Patch Set: Created 4 years, 4 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 | « src/compiler/js-generic-lowering.h ('k') | src/interpreter/interpreter.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/code-factory.h" 5 #include "src/code-factory.h"
6 #include "src/code-stubs.h" 6 #include "src/code-stubs.h"
7 #include "src/compiler/common-operator.h" 7 #include "src/compiler/common-operator.h"
8 #include "src/compiler/js-generic-lowering.h" 8 #include "src/compiler/js-generic-lowering.h"
9 #include "src/compiler/js-graph.h" 9 #include "src/compiler/js-graph.h"
10 #include "src/compiler/machine-operator.h" 10 #include "src/compiler/machine-operator.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 REPLACE_STUB_CALL(Equal) 80 REPLACE_STUB_CALL(Equal)
81 REPLACE_STUB_CALL(NotEqual) 81 REPLACE_STUB_CALL(NotEqual)
82 REPLACE_STUB_CALL(ToInteger) 82 REPLACE_STUB_CALL(ToInteger)
83 REPLACE_STUB_CALL(ToLength) 83 REPLACE_STUB_CALL(ToLength)
84 REPLACE_STUB_CALL(ToNumber) 84 REPLACE_STUB_CALL(ToNumber)
85 REPLACE_STUB_CALL(ToName) 85 REPLACE_STUB_CALL(ToName)
86 REPLACE_STUB_CALL(ToObject) 86 REPLACE_STUB_CALL(ToObject)
87 REPLACE_STUB_CALL(ToString) 87 REPLACE_STUB_CALL(ToString)
88 #undef REPLACE_STUB_CALL 88 #undef REPLACE_STUB_CALL
89 89
90 void JSGenericLowering::ReplaceWithStubCall(Node* node, Callable callable, 90 void JSGenericLowering::ReplaceWithStubCall(Node* node,
91 const Callable& callable,
91 CallDescriptor::Flags flags) { 92 CallDescriptor::Flags flags) {
92 ReplaceWithStubCall(node, callable, flags, node->op()->properties()); 93 ReplaceWithStubCall(node, callable, flags, node->op()->properties());
93 } 94 }
94 95
95 void JSGenericLowering::ReplaceWithStubCall(Node* node, Callable callable, 96 void JSGenericLowering::ReplaceWithStubCall(Node* node,
97 const Callable& callable,
96 CallDescriptor::Flags flags, 98 CallDescriptor::Flags flags,
97 Operator::Properties properties) { 99 Operator::Properties properties) {
98 CallDescriptor* desc = Linkage::GetStubCallDescriptor( 100 CallDescriptor* desc = Linkage::GetStubCallDescriptor(
99 isolate(), zone(), callable.descriptor(), 0, flags, properties); 101 isolate(), zone(), callable.descriptor(), 0, flags, properties);
100 Node* stub_code = jsgraph()->HeapConstant(callable.code()); 102 Node* stub_code = jsgraph()->HeapConstant(callable.code());
101 node->InsertInput(zone(), 0, stub_code); 103 node->InsertInput(zone(), 0, stub_code);
102 NodeProperties::ChangeOp(node, common()->Call(desc)); 104 NodeProperties::ChangeOp(node, common()->Call(desc));
103 } 105 }
104 106
105 107
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 145
144 void JSGenericLowering::LowerJSTypeOf(Node* node) { 146 void JSGenericLowering::LowerJSTypeOf(Node* node) {
145 Callable callable = CodeFactory::Typeof(isolate()); 147 Callable callable = CodeFactory::Typeof(isolate());
146 node->AppendInput(zone(), graph()->start()); 148 node->AppendInput(zone(), graph()->start());
147 ReplaceWithStubCall(node, callable, CallDescriptor::kNoAllocate, 149 ReplaceWithStubCall(node, callable, CallDescriptor::kNoAllocate,
148 Operator::kEliminatable); 150 Operator::kEliminatable);
149 } 151 }
150 152
151 153
152 void JSGenericLowering::LowerJSLoadProperty(Node* node) { 154 void JSGenericLowering::LowerJSLoadProperty(Node* node) {
155 Node* receiver = NodeProperties::GetValueInput(node, 0);
156 Node* key = NodeProperties::GetValueInput(node, 1);
153 Node* closure = NodeProperties::GetValueInput(node, 2); 157 Node* closure = NodeProperties::GetValueInput(node, 2);
154 Node* effect = NodeProperties::GetEffectInput(node); 158 Node* effect = NodeProperties::GetEffectInput(node);
155 Node* control = NodeProperties::GetControlInput(node); 159 Node* control = NodeProperties::GetControlInput(node);
156 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node); 160 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node);
157 const PropertyAccess& p = PropertyAccessOf(node->op()); 161 const PropertyAccess& p = PropertyAccessOf(node->op());
158 Callable callable = CodeFactory::KeyedLoadICInOptimizedCode(isolate()); 162 auto callable = CodeFactory::KeyedLoadICInOptimizedCode(isolate());
159 // Load the type feedback vector from the closure. 163 // Load the type feedback vector from the closure.
160 Node* literals = effect = graph()->NewNode( 164 Node* literals = effect = graph()->NewNode(
161 machine()->Load(MachineType::AnyTagged()), closure, 165 machine()->Load(MachineType::AnyTagged()), closure,
162 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag), 166 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag),
163 effect, control); 167 effect, control);
164 Node* vector = effect = graph()->NewNode( 168 Node* vector = effect = graph()->NewNode(
165 machine()->Load(MachineType::AnyTagged()), literals, 169 machine()->Load(MachineType::AnyTagged()), literals,
166 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset - 170 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset -
167 kHeapObjectTag), 171 kHeapObjectTag),
168 effect, control); 172 effect, control);
169 node->InsertInput(zone(), 2, jsgraph()->SmiConstant(p.feedback().index())); 173 typedef decltype(callable)::Descriptor Descriptor;
170 node->ReplaceInput(3, vector); 174 node->InsertInputs(zone(), 0, 1);
175 node->ReplaceInput(Descriptor::kReceiver, receiver);
176 node->ReplaceInput(Descriptor::kName, key);
177 node->ReplaceInput(Descriptor::kSlot,
178 jsgraph()->SmiConstant(p.feedback().index()));
179 node->ReplaceInput(Descriptor::kVector, vector);
171 node->ReplaceInput(6, effect); 180 node->ReplaceInput(6, effect);
172 ReplaceWithStubCall(node, callable, flags); 181 ReplaceWithStubCall(node, callable, flags);
173 } 182 }
174 183
175 184
176 void JSGenericLowering::LowerJSLoadNamed(Node* node) { 185 void JSGenericLowering::LowerJSLoadNamed(Node* node) {
186 Node* receiver = NodeProperties::GetValueInput(node, 0);
177 Node* closure = NodeProperties::GetValueInput(node, 1); 187 Node* closure = NodeProperties::GetValueInput(node, 1);
178 Node* effect = NodeProperties::GetEffectInput(node); 188 Node* effect = NodeProperties::GetEffectInput(node);
179 Node* control = NodeProperties::GetControlInput(node); 189 Node* control = NodeProperties::GetControlInput(node);
180 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node); 190 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node);
181 NamedAccess const& p = NamedAccessOf(node->op()); 191 NamedAccess const& p = NamedAccessOf(node->op());
182 Callable callable = CodeFactory::LoadICInOptimizedCode(isolate()); 192 auto callable = CodeFactory::LoadICInOptimizedCode(isolate());
183 // Load the type feedback vector from the closure. 193 // Load the type feedback vector from the closure.
184 Node* literals = effect = graph()->NewNode( 194 Node* literals = effect = graph()->NewNode(
185 machine()->Load(MachineType::AnyTagged()), closure, 195 machine()->Load(MachineType::AnyTagged()), closure,
186 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag), 196 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag),
187 effect, control); 197 effect, control);
188 Node* vector = effect = graph()->NewNode( 198 Node* vector = effect = graph()->NewNode(
189 machine()->Load(MachineType::AnyTagged()), literals, 199 machine()->Load(MachineType::AnyTagged()), literals,
190 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset - 200 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset -
191 kHeapObjectTag), 201 kHeapObjectTag),
192 effect, control); 202 effect, control);
193 node->InsertInput(zone(), 1, jsgraph()->HeapConstant(p.name())); 203 typedef decltype(callable)::Descriptor Descriptor;
194 node->InsertInput(zone(), 2, jsgraph()->SmiConstant(p.feedback().index())); 204 node->InsertInputs(zone(), 0, 2);
195 node->ReplaceInput(3, vector); 205 node->ReplaceInput(Descriptor::kReceiver, receiver);
206 node->ReplaceInput(Descriptor::kName, jsgraph()->HeapConstant(p.name()));
207 node->ReplaceInput(Descriptor::kSlot,
208 jsgraph()->SmiConstant(p.feedback().index()));
209 node->ReplaceInput(Descriptor::kVector, vector);
196 node->ReplaceInput(6, effect); 210 node->ReplaceInput(6, effect);
197 ReplaceWithStubCall(node, callable, flags); 211 ReplaceWithStubCall(node, callable, flags);
198 } 212 }
199 213
200 214
201 void JSGenericLowering::LowerJSLoadGlobal(Node* node) { 215 void JSGenericLowering::LowerJSLoadGlobal(Node* node) {
202 Node* closure = NodeProperties::GetValueInput(node, 0); 216 Node* closure = NodeProperties::GetValueInput(node, 0);
203 Node* effect = NodeProperties::GetEffectInput(node); 217 Node* effect = NodeProperties::GetEffectInput(node);
204 Node* control = NodeProperties::GetControlInput(node); 218 Node* control = NodeProperties::GetControlInput(node);
205 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node); 219 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node);
206 const LoadGlobalParameters& p = LoadGlobalParametersOf(node->op()); 220 const LoadGlobalParameters& p = LoadGlobalParametersOf(node->op());
207 Callable callable = 221 auto callable =
208 CodeFactory::LoadGlobalICInOptimizedCode(isolate(), p.typeof_mode()); 222 CodeFactory::LoadGlobalICInOptimizedCode(isolate(), p.typeof_mode());
209 // Load the type feedback vector from the closure. 223 // Load the type feedback vector from the closure.
210 Node* literals = effect = graph()->NewNode( 224 Node* literals = effect = graph()->NewNode(
211 machine()->Load(MachineType::AnyTagged()), closure, 225 machine()->Load(MachineType::AnyTagged()), closure,
212 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag), 226 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag),
213 effect, control); 227 effect, control);
214 Node* vector = effect = graph()->NewNode( 228 Node* vector = effect = graph()->NewNode(
215 machine()->Load(MachineType::AnyTagged()), literals, 229 machine()->Load(MachineType::AnyTagged()), literals,
216 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset - 230 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset -
217 kHeapObjectTag), 231 kHeapObjectTag),
218 effect, control); 232 effect, control);
219 node->InsertInput(zone(), 0, jsgraph()->SmiConstant(p.feedback().index())); 233 typedef decltype(callable)::Descriptor Descriptor;
220 node->ReplaceInput(1, vector); 234 node->InsertInputs(zone(), 0, 1);
235 node->ReplaceInput(Descriptor::kSlot,
236 jsgraph()->SmiConstant(p.feedback().index()));
237 node->ReplaceInput(Descriptor::kVector, vector);
221 node->ReplaceInput(4, effect); 238 node->ReplaceInput(4, effect);
222 ReplaceWithStubCall(node, callable, flags); 239 ReplaceWithStubCall(node, callable, flags);
223 } 240 }
224 241
225 242
226 void JSGenericLowering::LowerJSStoreProperty(Node* node) { 243 void JSGenericLowering::LowerJSStoreProperty(Node* node) {
227 Node* receiver = NodeProperties::GetValueInput(node, 0); 244 Node* receiver = NodeProperties::GetValueInput(node, 0);
228 Node* key = NodeProperties::GetValueInput(node, 1); 245 Node* key = NodeProperties::GetValueInput(node, 1);
229 Node* value = NodeProperties::GetValueInput(node, 2); 246 Node* value = NodeProperties::GetValueInput(node, 2);
230 Node* closure = NodeProperties::GetValueInput(node, 3); 247 Node* closure = NodeProperties::GetValueInput(node, 3);
231 Node* effect = NodeProperties::GetEffectInput(node); 248 Node* effect = NodeProperties::GetEffectInput(node);
232 Node* control = NodeProperties::GetControlInput(node); 249 Node* control = NodeProperties::GetControlInput(node);
233 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node); 250 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node);
234 PropertyAccess const& p = PropertyAccessOf(node->op()); 251 PropertyAccess const& p = PropertyAccessOf(node->op());
235 LanguageMode language_mode = p.language_mode(); 252 LanguageMode language_mode = p.language_mode();
236 Callable callable = 253 auto callable =
237 CodeFactory::KeyedStoreICInOptimizedCode(isolate(), language_mode); 254 CodeFactory::KeyedStoreICInOptimizedCode(isolate(), language_mode);
238 // Load the type feedback vector from the closure. 255 // Load the type feedback vector from the closure.
239 Node* literals = effect = graph()->NewNode( 256 Node* literals = effect = graph()->NewNode(
240 machine()->Load(MachineType::AnyTagged()), closure, 257 machine()->Load(MachineType::AnyTagged()), closure,
241 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag), 258 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag),
242 effect, control); 259 effect, control);
243 Node* vector = effect = graph()->NewNode( 260 Node* vector = effect = graph()->NewNode(
244 machine()->Load(MachineType::AnyTagged()), literals, 261 machine()->Load(MachineType::AnyTagged()), literals,
245 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset - 262 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset -
246 kHeapObjectTag), 263 kHeapObjectTag),
247 effect, control); 264 effect, control);
248 typedef StoreWithVectorDescriptor Descriptor; 265 typedef decltype(callable)::Descriptor Descriptor;
249 node->InsertInputs(zone(), 0, 1); 266 node->InsertInputs(zone(), 0, 1);
250 node->ReplaceInput(Descriptor::kReceiver, receiver); 267 node->ReplaceInput(Descriptor::kReceiver, receiver);
251 node->ReplaceInput(Descriptor::kName, key); 268 node->ReplaceInput(Descriptor::kName, key);
252 node->ReplaceInput(Descriptor::kValue, value); 269 node->ReplaceInput(Descriptor::kValue, value);
253 node->ReplaceInput(Descriptor::kSlot, 270 node->ReplaceInput(Descriptor::kSlot,
254 jsgraph()->SmiConstant(p.feedback().index())); 271 jsgraph()->SmiConstant(p.feedback().index()));
255 node->ReplaceInput(Descriptor::kVector, vector); 272 node->ReplaceInput(Descriptor::kVector, vector);
256 node->ReplaceInput(7, effect); 273 node->ReplaceInput(7, effect);
257 ReplaceWithStubCall(node, callable, flags); 274 ReplaceWithStubCall(node, callable, flags);
258 } 275 }
259 276
260 277
261 void JSGenericLowering::LowerJSStoreNamed(Node* node) { 278 void JSGenericLowering::LowerJSStoreNamed(Node* node) {
262 Node* receiver = NodeProperties::GetValueInput(node, 0); 279 Node* receiver = NodeProperties::GetValueInput(node, 0);
263 Node* value = NodeProperties::GetValueInput(node, 1); 280 Node* value = NodeProperties::GetValueInput(node, 1);
264 Node* closure = NodeProperties::GetValueInput(node, 2); 281 Node* closure = NodeProperties::GetValueInput(node, 2);
265 Node* effect = NodeProperties::GetEffectInput(node); 282 Node* effect = NodeProperties::GetEffectInput(node);
266 Node* control = NodeProperties::GetControlInput(node); 283 Node* control = NodeProperties::GetControlInput(node);
267 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node); 284 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node);
268 NamedAccess const& p = NamedAccessOf(node->op()); 285 NamedAccess const& p = NamedAccessOf(node->op());
269 Callable callable = 286 auto callable =
270 CodeFactory::StoreICInOptimizedCode(isolate(), p.language_mode()); 287 CodeFactory::StoreICInOptimizedCode(isolate(), p.language_mode());
271 // Load the type feedback vector from the closure. 288 // Load the type feedback vector from the closure.
272 Node* literals = effect = graph()->NewNode( 289 Node* literals = effect = graph()->NewNode(
273 machine()->Load(MachineType::AnyTagged()), closure, 290 machine()->Load(MachineType::AnyTagged()), closure,
274 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag), 291 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag),
275 effect, control); 292 effect, control);
276 Node* vector = effect = graph()->NewNode( 293 Node* vector = effect = graph()->NewNode(
277 machine()->Load(MachineType::AnyTagged()), literals, 294 machine()->Load(MachineType::AnyTagged()), literals,
278 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset - 295 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset -
279 kHeapObjectTag), 296 kHeapObjectTag),
280 effect, control); 297 effect, control);
281 typedef StoreWithVectorDescriptor Descriptor; 298 typedef decltype(callable)::Descriptor Descriptor;
282 node->InsertInputs(zone(), 0, 2); 299 node->InsertInputs(zone(), 0, 2);
283 node->ReplaceInput(Descriptor::kReceiver, receiver); 300 node->ReplaceInput(Descriptor::kReceiver, receiver);
284 node->ReplaceInput(Descriptor::kName, jsgraph()->HeapConstant(p.name())); 301 node->ReplaceInput(Descriptor::kName, jsgraph()->HeapConstant(p.name()));
285 node->ReplaceInput(Descriptor::kValue, value); 302 node->ReplaceInput(Descriptor::kValue, value);
286 node->ReplaceInput(Descriptor::kSlot, 303 node->ReplaceInput(Descriptor::kSlot,
287 jsgraph()->SmiConstant(p.feedback().index())); 304 jsgraph()->SmiConstant(p.feedback().index()));
288 node->ReplaceInput(Descriptor::kVector, vector); 305 node->ReplaceInput(Descriptor::kVector, vector);
289 node->ReplaceInput(7, effect); 306 node->ReplaceInput(7, effect);
290 ReplaceWithStubCall(node, callable, flags); 307 ReplaceWithStubCall(node, callable, flags);
291 } 308 }
292 309
293 310
294 void JSGenericLowering::LowerJSStoreGlobal(Node* node) { 311 void JSGenericLowering::LowerJSStoreGlobal(Node* node) {
295 Node* value = NodeProperties::GetValueInput(node, 0); 312 Node* value = NodeProperties::GetValueInput(node, 0);
296 Node* closure = NodeProperties::GetValueInput(node, 1); 313 Node* closure = NodeProperties::GetValueInput(node, 1);
297 Node* context = NodeProperties::GetContextInput(node); 314 Node* context = NodeProperties::GetContextInput(node);
298 Node* effect = NodeProperties::GetEffectInput(node); 315 Node* effect = NodeProperties::GetEffectInput(node);
299 Node* control = NodeProperties::GetControlInput(node); 316 Node* control = NodeProperties::GetControlInput(node);
300 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node); 317 CallDescriptor::Flags flags = AdjustFrameStatesForCall(node);
301 const StoreGlobalParameters& p = StoreGlobalParametersOf(node->op()); 318 const StoreGlobalParameters& p = StoreGlobalParametersOf(node->op());
302 Callable callable = 319 auto callable =
303 CodeFactory::StoreICInOptimizedCode(isolate(), p.language_mode()); 320 CodeFactory::StoreICInOptimizedCode(isolate(), p.language_mode());
304 // Load the type feedback vector from the closure. 321 // Load the type feedback vector from the closure.
305 Node* literals = effect = graph()->NewNode( 322 Node* literals = effect = graph()->NewNode(
306 machine()->Load(MachineType::AnyTagged()), closure, 323 machine()->Load(MachineType::AnyTagged()), closure,
307 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag), 324 jsgraph()->IntPtrConstant(JSFunction::kLiteralsOffset - kHeapObjectTag),
308 effect, control); 325 effect, control);
309 Node* vector = effect = graph()->NewNode( 326 Node* vector = effect = graph()->NewNode(
310 machine()->Load(MachineType::AnyTagged()), literals, 327 machine()->Load(MachineType::AnyTagged()), literals,
311 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset - 328 jsgraph()->IntPtrConstant(LiteralsArray::kFeedbackVectorOffset -
312 kHeapObjectTag), 329 kHeapObjectTag),
313 effect, control); 330 effect, control);
314 // Load global object from the context. 331 // Load global object from the context.
315 Node* native_context = effect = 332 Node* native_context = effect =
316 graph()->NewNode(machine()->Load(MachineType::AnyTagged()), context, 333 graph()->NewNode(machine()->Load(MachineType::AnyTagged()), context,
317 jsgraph()->IntPtrConstant( 334 jsgraph()->IntPtrConstant(
318 Context::SlotOffset(Context::NATIVE_CONTEXT_INDEX)), 335 Context::SlotOffset(Context::NATIVE_CONTEXT_INDEX)),
319 effect, control); 336 effect, control);
320 Node* global = effect = graph()->NewNode( 337 Node* global = effect = graph()->NewNode(
321 machine()->Load(MachineType::AnyTagged()), native_context, 338 machine()->Load(MachineType::AnyTagged()), native_context,
322 jsgraph()->IntPtrConstant(Context::SlotOffset(Context::EXTENSION_INDEX)), 339 jsgraph()->IntPtrConstant(Context::SlotOffset(Context::EXTENSION_INDEX)),
323 effect, control); 340 effect, control);
324 typedef StoreWithVectorDescriptor Descriptor; 341 typedef decltype(callable)::Descriptor Descriptor;
325 node->InsertInputs(zone(), 0, 3); 342 node->InsertInputs(zone(), 0, 3);
326 node->ReplaceInput(Descriptor::kReceiver, global); 343 node->ReplaceInput(Descriptor::kReceiver, global);
327 node->ReplaceInput(Descriptor::kName, jsgraph()->HeapConstant(p.name())); 344 node->ReplaceInput(Descriptor::kName, jsgraph()->HeapConstant(p.name()));
328 node->ReplaceInput(Descriptor::kValue, value); 345 node->ReplaceInput(Descriptor::kValue, value);
329 node->ReplaceInput(Descriptor::kSlot, 346 node->ReplaceInput(Descriptor::kSlot,
330 jsgraph()->SmiConstant(p.feedback().index())); 347 jsgraph()->SmiConstant(p.feedback().index()));
331 node->ReplaceInput(Descriptor::kVector, vector); 348 node->ReplaceInput(Descriptor::kVector, vector);
332 node->ReplaceInput(7, effect); 349 node->ReplaceInput(7, effect);
333 ReplaceWithStubCall(node, callable, flags); 350 ReplaceWithStubCall(node, callable, flags);
334 } 351 }
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 } 709 }
693 710
694 711
695 MachineOperatorBuilder* JSGenericLowering::machine() const { 712 MachineOperatorBuilder* JSGenericLowering::machine() const {
696 return jsgraph()->machine(); 713 return jsgraph()->machine();
697 } 714 }
698 715
699 } // namespace compiler 716 } // namespace compiler
700 } // namespace internal 717 } // namespace internal
701 } // namespace v8 718 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-generic-lowering.h ('k') | src/interpreter/interpreter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698