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

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

Issue 595863002: Adding more missing deoptimization points in Turbofan. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebase Created 6 years, 2 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/compiler/instruction-selector-unittest.cc ('k') | src/compiler/js-inlining.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 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/graph-inl.h" 8 #include "src/compiler/graph-inl.h"
9 #include "src/compiler/js-generic-lowering.h" 9 #include "src/compiler/js-generic-lowering.h"
10 #include "src/compiler/machine-operator.h" 10 #include "src/compiler/machine-operator.h"
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 PatchInsertInput(node, 0, stub_code); 191 PatchInsertInput(node, 0, stub_code);
192 PatchOperator(node, common()->Call(desc)); 192 PatchOperator(node, common()->Call(desc));
193 } 193 }
194 194
195 195
196 void JSGenericLowering::ReplaceWithBuiltinCall(Node* node, 196 void JSGenericLowering::ReplaceWithBuiltinCall(Node* node,
197 Builtins::JavaScript id, 197 Builtins::JavaScript id,
198 int nargs) { 198 int nargs) {
199 Callable callable = 199 Callable callable =
200 CodeFactory::CallFunction(isolate(), nargs - 1, NO_CALL_FUNCTION_FLAGS); 200 CodeFactory::CallFunction(isolate(), nargs - 1, NO_CALL_FUNCTION_FLAGS);
201 CallDescriptor* desc = 201 CallDescriptor* desc = linkage()->GetStubCallDescriptor(
202 linkage()->GetStubCallDescriptor(callable.descriptor(), nargs); 202 callable.descriptor(), nargs, FlagsForNode(node));
203 // TODO(mstarzinger): Accessing the builtins object this way prevents sharing 203 // TODO(mstarzinger): Accessing the builtins object this way prevents sharing
204 // of code across native contexts. Fix this by loading from given context. 204 // of code across native contexts. Fix this by loading from given context.
205 Handle<JSFunction> function( 205 Handle<JSFunction> function(
206 JSFunction::cast(info()->context()->builtins()->javascript_builtin(id))); 206 JSFunction::cast(info()->context()->builtins()->javascript_builtin(id)));
207 Node* stub_code = CodeConstant(callable.code()); 207 Node* stub_code = CodeConstant(callable.code());
208 Node* function_node = FunctionConstant(function); 208 Node* function_node = FunctionConstant(function);
209 PatchInsertInput(node, 0, stub_code); 209 PatchInsertInput(node, 0, stub_code);
210 PatchInsertInput(node, 1, function_node); 210 PatchInsertInput(node, 1, function_node);
211 PatchOperator(node, common()->Call(desc)); 211 PatchOperator(node, common()->Call(desc));
212 } 212 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 253
254 void JSGenericLowering::LowerJSToBoolean(Node* node) { 254 void JSGenericLowering::LowerJSToBoolean(Node* node) {
255 Callable callable = 255 Callable callable =
256 CodeFactory::ToBoolean(isolate(), ToBooleanStub::RESULT_AS_ODDBALL); 256 CodeFactory::ToBoolean(isolate(), ToBooleanStub::RESULT_AS_ODDBALL);
257 ReplaceWithStubCall(node, callable, CallDescriptor::kPatchableCallSite); 257 ReplaceWithStubCall(node, callable, CallDescriptor::kPatchableCallSite);
258 } 258 }
259 259
260 260
261 void JSGenericLowering::LowerJSToNumber(Node* node) { 261 void JSGenericLowering::LowerJSToNumber(Node* node) {
262 Callable callable = CodeFactory::ToNumber(isolate()); 262 Callable callable = CodeFactory::ToNumber(isolate());
263 ReplaceWithStubCall(node, callable, CallDescriptor::kNoFlags); 263 ReplaceWithStubCall(node, callable, FlagsForNode(node));
264 } 264 }
265 265
266 266
267 void JSGenericLowering::LowerJSToString(Node* node) { 267 void JSGenericLowering::LowerJSToString(Node* node) {
268 ReplaceWithBuiltinCall(node, Builtins::TO_STRING, 1); 268 ReplaceWithBuiltinCall(node, Builtins::TO_STRING, 1);
269 } 269 }
270 270
271 271
272 void JSGenericLowering::LowerJSToObject(Node* node) { 272 void JSGenericLowering::LowerJSToObject(Node* node) {
273 ReplaceWithBuiltinCall(node, Builtins::TO_OBJECT, 1); 273 ReplaceWithBuiltinCall(node, Builtins::TO_OBJECT, 1);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 ReplaceWithBuiltinCall(node, Builtins::IN, 2); 314 ReplaceWithBuiltinCall(node, Builtins::IN, 2);
315 } 315 }
316 316
317 317
318 void JSGenericLowering::LowerJSInstanceOf(Node* node) { 318 void JSGenericLowering::LowerJSInstanceOf(Node* node) {
319 InstanceofStub::Flags flags = static_cast<InstanceofStub::Flags>( 319 InstanceofStub::Flags flags = static_cast<InstanceofStub::Flags>(
320 InstanceofStub::kReturnTrueFalseObject | 320 InstanceofStub::kReturnTrueFalseObject |
321 InstanceofStub::kArgsInRegisters); 321 InstanceofStub::kArgsInRegisters);
322 InstanceofStub stub(isolate(), flags); 322 InstanceofStub stub(isolate(), flags);
323 CallInterfaceDescriptor d = stub.GetCallInterfaceDescriptor(); 323 CallInterfaceDescriptor d = stub.GetCallInterfaceDescriptor();
324 CallDescriptor* desc = linkage()->GetStubCallDescriptor(d, 0); 324 CallDescriptor* desc =
325 linkage()->GetStubCallDescriptor(d, 0, FlagsForNode(node));
325 Node* stub_code = CodeConstant(stub.GetCode()); 326 Node* stub_code = CodeConstant(stub.GetCode());
326 PatchInsertInput(node, 0, stub_code); 327 PatchInsertInput(node, 0, stub_code);
327 PatchOperator(node, common()->Call(desc)); 328 PatchOperator(node, common()->Call(desc));
328 } 329 }
329 330
330 331
331 void JSGenericLowering::LowerJSLoadContext(Node* node) { 332 void JSGenericLowering::LowerJSLoadContext(Node* node) {
332 ContextAccess access = OpParameter<ContextAccess>(node); 333 ContextAccess access = OpParameter<ContextAccess>(node);
333 // TODO(mstarzinger): Use simplified operators instead of machine operators 334 // TODO(mstarzinger): Use simplified operators instead of machine operators
334 // here so that load/store optimization can be applied afterwards. 335 // here so that load/store optimization can be applied afterwards.
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 395
395 void JSGenericLowering::LowerJSCallRuntime(Node* node) { 396 void JSGenericLowering::LowerJSCallRuntime(Node* node) {
396 Runtime::FunctionId function = OpParameter<Runtime::FunctionId>(node); 397 Runtime::FunctionId function = OpParameter<Runtime::FunctionId>(node);
397 int arity = OperatorProperties::GetValueInputCount(node->op()); 398 int arity = OperatorProperties::GetValueInputCount(node->op());
398 ReplaceWithRuntimeCall(node, function, arity); 399 ReplaceWithRuntimeCall(node, function, arity);
399 } 400 }
400 401
401 } // namespace compiler 402 } // namespace compiler
402 } // namespace internal 403 } // namespace internal
403 } // namespace v8 404 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector-unittest.cc ('k') | src/compiler/js-inlining.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698