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

Side by Side Diff: src/builtins/builtins-function.cc

Issue 2573573004: [stubs] Enable graph verification for builtins. (Closed)
Patch Set: Created 4 years 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
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-utils.h" 5 #include "src/builtins/builtins-utils.h"
6 #include "src/builtins/builtins.h" 6 #include "src/builtins/builtins.h"
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/code-stub-assembler.h" 8 #include "src/code-stub-assembler.h"
9 #include "src/compiler.h" 9 #include "src/compiler.h"
10 #include "src/string-builder.h" 10 #include "src/string-builder.h"
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 assembler.LoadMapPrototype(bound_function_map.value()); 360 assembler.LoadMapPrototype(bound_function_map.value());
361 assembler.GotoIf(assembler.WordNotEqual(prototype, expected_prototype), 361 assembler.GotoIf(assembler.WordNotEqual(prototype, expected_prototype),
362 &slow); 362 &slow);
363 363
364 // Allocate the arguments array. 364 // Allocate the arguments array.
365 assembler.Comment("Allocate the arguments array"); 365 assembler.Comment("Allocate the arguments array");
366 Variable argument_array(&assembler, MachineRepresentation::kTagged); 366 Variable argument_array(&assembler, MachineRepresentation::kTagged);
367 Label empty_arguments(&assembler); 367 Label empty_arguments(&assembler);
368 Label arguments_done(&assembler, &argument_array); 368 Label arguments_done(&assembler, &argument_array);
369 assembler.GotoIf( 369 assembler.GotoIf(
370 assembler.UintPtrLessThanOrEqual(argc, assembler.IntPtrConstant(1)), 370 assembler.Uint32LessThanOrEqual(argc, assembler.Int32Constant(1)),
371 &empty_arguments); 371 &empty_arguments);
372 Node* elements_length = 372 Node* elements_length = assembler.ChangeUint32ToWord(
373 assembler.IntPtrSub(argc, assembler.IntPtrConstant(1)); 373 assembler.Int32Sub(argc, assembler.Int32Constant(1)));
374 Node* elements = assembler.AllocateFixedArray( 374 Node* elements = assembler.AllocateFixedArray(
375 FAST_ELEMENTS, elements_length, CodeStubAssembler::INTPTR_PARAMETERS); 375 FAST_ELEMENTS, elements_length, CodeStubAssembler::INTPTR_PARAMETERS);
376 Variable index(&assembler, MachineType::PointerRepresentation()); 376 Variable index(&assembler, MachineType::PointerRepresentation());
377 index.Bind(assembler.IntPtrConstant(0)); 377 index.Bind(assembler.IntPtrConstant(0));
378 CodeStubAssembler::VariableList foreach_vars({&index}, assembler.zone()); 378 CodeStubAssembler::VariableList foreach_vars({&index}, assembler.zone());
379 args.ForEach(foreach_vars, 379 args.ForEach(foreach_vars,
380 [&assembler, elements, &index](compiler::Node* arg) { 380 [&assembler, elements, &index](compiler::Node* arg) {
381 assembler.StoreFixedArrayElement( 381 assembler.StoreFixedArrayElement(
382 elements, index.value(), arg, UPDATE_WRITE_BARRIER, 0, 382 elements, index.value(), arg, UPDATE_WRITE_BARRIER, 0,
383 CodeStubAssembler::INTPTR_PARAMETERS); 383 CodeStubAssembler::INTPTR_PARAMETERS);
384 assembler.Increment(index); 384 assembler.Increment(index);
385 }, 385 },
386 assembler.IntPtrConstant(1)); 386 assembler.IntPtrConstant(1));
387 argument_array.Bind(elements); 387 argument_array.Bind(elements);
388 assembler.Goto(&arguments_done); 388 assembler.Goto(&arguments_done);
389 389
390 assembler.Bind(&empty_arguments); 390 assembler.Bind(&empty_arguments);
391 argument_array.Bind(assembler.EmptyFixedArrayConstant()); 391 argument_array.Bind(assembler.EmptyFixedArrayConstant());
392 assembler.Goto(&arguments_done); 392 assembler.Goto(&arguments_done);
393 393
394 assembler.Bind(&arguments_done); 394 assembler.Bind(&arguments_done);
395 395
396 // Determine bound receiver. 396 // Determine bound receiver.
397 assembler.Comment("Determine bound receiver"); 397 assembler.Comment("Determine bound receiver");
398 Variable bound_receiver(&assembler, MachineRepresentation::kTagged); 398 Variable bound_receiver(&assembler, MachineRepresentation::kTagged);
399 Label has_receiver(&assembler); 399 Label has_receiver(&assembler);
400 Label receiver_done(&assembler, &bound_receiver); 400 Label receiver_done(&assembler, &bound_receiver);
401 assembler.GotoIf(assembler.WordNotEqual(argc, assembler.IntPtrConstant(0)), 401 assembler.GotoIf(assembler.Word32NotEqual(argc, assembler.Int32Constant(0)),
402 &has_receiver); 402 &has_receiver);
403 bound_receiver.Bind(assembler.UndefinedConstant()); 403 bound_receiver.Bind(assembler.UndefinedConstant());
404 assembler.Goto(&receiver_done); 404 assembler.Goto(&receiver_done);
405 405
406 assembler.Bind(&has_receiver); 406 assembler.Bind(&has_receiver);
407 bound_receiver.Bind(args.AtIndex(0)); 407 bound_receiver.Bind(args.AtIndex(0));
408 assembler.Goto(&receiver_done); 408 assembler.Goto(&receiver_done);
409 409
410 assembler.Bind(&receiver_done); 410 assembler.Bind(&receiver_done);
411 411
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 471
472 Node* f = assembler.Parameter(0); 472 Node* f = assembler.Parameter(0);
473 Node* v = assembler.Parameter(1); 473 Node* v = assembler.Parameter(1);
474 Node* context = assembler.Parameter(4); 474 Node* context = assembler.Parameter(4);
475 Node* result = assembler.OrdinaryHasInstance(context, f, v); 475 Node* result = assembler.OrdinaryHasInstance(context, f, v);
476 assembler.Return(result); 476 assembler.Return(result);
477 } 477 }
478 478
479 } // namespace internal 479 } // namespace internal
480 } // namespace v8 480 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698