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/builtins/builtins-string.cc

Issue 2364473006: [stubs] Extract ToInteger to CodeStubAssembler (Closed)
Patch Set: Created 4 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
« no previous file with comments | « src/builtins/builtins-sharedarraybuffer.cc ('k') | src/code-stub-assembler.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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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/builtins/builtins.h" 5 #include "src/builtins/builtins.h"
6 #include "src/builtins/builtins-utils.h" 6 #include "src/builtins/builtins-utils.h"
7 7
8 #include "src/code-factory.h" 8 #include "src/code-factory.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 // Check if the {position} is already a Smi. 311 // Check if the {position} is already a Smi.
312 Variable var_position(assembler, MachineRepresentation::kTagged); 312 Variable var_position(assembler, MachineRepresentation::kTagged);
313 var_position.Bind(position); 313 var_position.Bind(position);
314 Label if_positionissmi(assembler), 314 Label if_positionissmi(assembler),
315 if_positionisnotsmi(assembler, Label::kDeferred); 315 if_positionisnotsmi(assembler, Label::kDeferred);
316 assembler->Branch(assembler->WordIsSmi(position), &if_positionissmi, 316 assembler->Branch(assembler->WordIsSmi(position), &if_positionissmi,
317 &if_positionisnotsmi); 317 &if_positionisnotsmi);
318 assembler->Bind(&if_positionisnotsmi); 318 assembler->Bind(&if_positionisnotsmi);
319 { 319 {
320 // Convert the {position} to an Integer via the ToIntegerStub. 320 // Convert the {position} to an Integer via the ToIntegerStub.
321 Callable callable = CodeFactory::ToInteger(assembler->isolate()); 321 Node* index = assembler->ToInteger(context, position);
322 Node* index = assembler->CallStub(callable, context, position);
323 322
324 // Check if the resulting {index} is now a Smi. 323 // Check if the resulting {index} is now a Smi.
325 Label if_indexissmi(assembler, Label::kDeferred), 324 Label if_indexissmi(assembler, Label::kDeferred),
326 if_indexisnotsmi(assembler, Label::kDeferred); 325 if_indexisnotsmi(assembler, Label::kDeferred);
327 assembler->Branch(assembler->WordIsSmi(index), &if_indexissmi, 326 assembler->Branch(assembler->WordIsSmi(index), &if_indexissmi,
328 &if_indexisnotsmi); 327 &if_indexisnotsmi);
329 328
330 assembler->Bind(&if_indexissmi); 329 assembler->Bind(&if_indexissmi);
331 { 330 {
332 var_position.Bind(index); 331 var_position.Bind(index);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 // Check if the {position} is already a Smi. 405 // Check if the {position} is already a Smi.
407 Variable var_position(assembler, MachineRepresentation::kTagged); 406 Variable var_position(assembler, MachineRepresentation::kTagged);
408 var_position.Bind(position); 407 var_position.Bind(position);
409 Label if_positionissmi(assembler), 408 Label if_positionissmi(assembler),
410 if_positionisnotsmi(assembler, Label::kDeferred); 409 if_positionisnotsmi(assembler, Label::kDeferred);
411 assembler->Branch(assembler->WordIsSmi(position), &if_positionissmi, 410 assembler->Branch(assembler->WordIsSmi(position), &if_positionissmi,
412 &if_positionisnotsmi); 411 &if_positionisnotsmi);
413 assembler->Bind(&if_positionisnotsmi); 412 assembler->Bind(&if_positionisnotsmi);
414 { 413 {
415 // Convert the {position} to an Integer via the ToIntegerStub. 414 // Convert the {position} to an Integer via the ToIntegerStub.
416 Callable callable = CodeFactory::ToInteger(assembler->isolate()); 415 Node* index = assembler->ToInteger(context, position);
417 Node* index = assembler->CallStub(callable, context, position);
418 416
419 // Check if the resulting {index} is now a Smi. 417 // Check if the resulting {index} is now a Smi.
420 Label if_indexissmi(assembler, Label::kDeferred), 418 Label if_indexissmi(assembler, Label::kDeferred),
421 if_indexisnotsmi(assembler, Label::kDeferred); 419 if_indexisnotsmi(assembler, Label::kDeferred);
422 assembler->Branch(assembler->WordIsSmi(index), &if_indexissmi, 420 assembler->Branch(assembler->WordIsSmi(index), &if_indexissmi,
423 &if_indexisnotsmi); 421 &if_indexisnotsmi);
424 422
425 assembler->Bind(&if_indexissmi); 423 assembler->Bind(&if_indexissmi);
426 { 424 {
427 var_position.Bind(index); 425 var_position.Bind(index);
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 } 663 }
666 664
667 iterator->set_string(isolate->heap()->empty_string()); 665 iterator->set_string(isolate->heap()->empty_string());
668 666
669 return *isolate->factory()->NewJSIteratorResult( 667 return *isolate->factory()->NewJSIteratorResult(
670 isolate->factory()->undefined_value(), true); 668 isolate->factory()->undefined_value(), true);
671 } 669 }
672 670
673 } // namespace internal 671 } // namespace internal
674 } // namespace v8 672 } // namespace v8
OLDNEW
« no previous file with comments | « src/builtins/builtins-sharedarraybuffer.cc ('k') | src/code-stub-assembler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698