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

Side by Side Diff: src/runtime/runtime.h

Issue 1615943002: Runtime call counters and timers. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Tweaks Created 4 years, 11 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/isolate.cc ('k') | src/runtime/runtime.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 #ifndef V8_RUNTIME_RUNTIME_H_ 5 #ifndef V8_RUNTIME_RUNTIME_H_
6 #define V8_RUNTIME_RUNTIME_H_ 6 #define V8_RUNTIME_RUNTIME_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/base/platform/time.h"
9 #include "src/objects.h" 10 #include "src/objects.h"
10 #include "src/unicode.h" 11 #include "src/unicode.h"
11 #include "src/zone.h" 12 #include "src/zone.h"
12 13
13 namespace v8 { 14 namespace v8 {
14 namespace internal { 15 namespace internal {
15 16
16 // * Each intrinsic is consistently exposed in JavaScript via 2 names: 17 // * Each intrinsic is consistently exposed in JavaScript via 2 names:
17 // * %#name, which is always a runtime call. 18 // * %#name, which is always a runtime call.
18 // * %_#name, which can be inlined or just a runtime call, the compiler in 19 // * %_#name, which can be inlined or just a runtime call, the compiler in
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 F(CallSiteIsNativeRT, 1, 1) \ 330 F(CallSiteIsNativeRT, 1, 1) \
330 F(CallSiteIsToplevelRT, 1, 1) \ 331 F(CallSiteIsToplevelRT, 1, 1) \
331 F(CallSiteIsEvalRT, 1, 1) \ 332 F(CallSiteIsEvalRT, 1, 1) \
332 F(CallSiteIsConstructorRT, 1, 1) \ 333 F(CallSiteIsConstructorRT, 1, 1) \
333 F(IS_VAR, 1, 1) \ 334 F(IS_VAR, 1, 1) \
334 F(IncrementStatsCounter, 1, 1) \ 335 F(IncrementStatsCounter, 1, 1) \
335 F(ThrowConstructedNonConstructable, 1, 1) \ 336 F(ThrowConstructedNonConstructable, 1, 1) \
336 F(ThrowDerivedConstructorReturnedNonObject, 0, 1) \ 337 F(ThrowDerivedConstructorReturnedNonObject, 0, 1) \
337 F(ThrowCalledNonCallable, 1, 1) \ 338 F(ThrowCalledNonCallable, 1, 1) \
338 F(CreateListFromArrayLike, 1, 1) \ 339 F(CreateListFromArrayLike, 1, 1) \
339 F(IncrementUseCounter, 1, 1) 340 F(IncrementUseCounter, 1, 1) \
341 F(GetAndResetRuntimeCallStats, 0, 1)
340 342
341 343
342 #define FOR_EACH_INTRINSIC_JSON(F) \ 344 #define FOR_EACH_INTRINSIC_JSON(F) \
343 F(QuoteJSONString, 1, 1) \ 345 F(QuoteJSONString, 1, 1) \
344 F(BasicJSONStringify, 1, 1) \ 346 F(BasicJSONStringify, 1, 1) \
345 F(ParseJson, 1, 1) 347 F(ParseJson, 1, 1)
346 348
347 349
348 #define FOR_EACH_INTRINSIC_LITERALS(F) \ 350 #define FOR_EACH_INTRINSIC_LITERALS(F) \
349 F(CreateRegExpLiteral, 4, 1) \ 351 F(CreateRegExpLiteral, 4, 1) \
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 F(PushBlockContext, 2, 1) \ 562 F(PushBlockContext, 2, 1) \
561 F(IsJSModule, 1, 1) \ 563 F(IsJSModule, 1, 1) \
562 F(PushModuleContext, 2, 1) \ 564 F(PushModuleContext, 2, 1) \
563 F(DeclareModules, 1, 1) \ 565 F(DeclareModules, 1, 1) \
564 F(DeleteLookupSlot, 2, 1) \ 566 F(DeleteLookupSlot, 2, 1) \
565 F(StoreLookupSlot, 4, 1) \ 567 F(StoreLookupSlot, 4, 1) \
566 F(ArgumentsLength, 0, 1) \ 568 F(ArgumentsLength, 0, 1) \
567 F(Arguments, 1, 1) 569 F(Arguments, 1, 1)
568 570
569 571
570 #define FOR_EACH_INTRINSIC_SIMD(F) \ 572 #define FOR_EACH_INTRINSIC_SIMD(F) \
571 F(IsSimdValue, 1, 1) \ 573 F(IsSimdValue, 1, 1) \
572 F(SimdSameValue, 2, 1) \ 574 F(SimdSameValue, 2, 1) \
573 F(SimdSameValueZero, 2, 1) \ 575 F(SimdSameValueZero, 2, 1) \
574 F(CreateFloat32x4, 4, 1) \ 576 F(CreateFloat32x4, 4, 1) \
575 F(CreateInt32x4, 4, 1) \ 577 F(CreateInt32x4, 4, 1) \
576 F(CreateUint32x4, 4, 1) \ 578 F(CreateUint32x4, 4, 1) \
577 F(CreateBool32x4, 4, 1) \ 579 F(CreateBool32x4, 4, 1) \
578 F(CreateInt16x8, 8, 1) \ 580 F(CreateInt16x8, 8, 1) \
579 F(CreateUint16x8, 8, 1) \ 581 F(CreateUint16x8, 8, 1) \
580 F(CreateBool16x8, 8, 1) \ 582 F(CreateBool16x8, 8, 1) \
581 F(CreateInt8x16, 16, 1) \ 583 F(CreateInt8x16, 16, 1) \
582 F(CreateUint8x16, 16, 1) \ 584 F(CreateUint8x16, 16, 1) \
583 F(CreateBool8x16, 16, 1) \ 585 F(CreateBool8x16, 16, 1) \
584 F(Float32x4Check, 1, 1) \ 586 F(Float32x4Check, 1, 1) \
585 F(Float32x4ExtractLane, 2, 1) \ 587 F(Float32x4ExtractLane, 2, 1) \
586 F(Float32x4ReplaceLane, 3, 1) \ 588 F(Float32x4ReplaceLane, 3, 1) \
587 F(Float32x4Abs, 1, 1) \ 589 F(Float32x4Abs, 1, 1) \
588 F(Float32x4Neg, 1, 1) \ 590 F(Float32x4Neg, 1, 1) \
589 F(Float32x4Sqrt, 1, 1) \ 591 F(Float32x4Sqrt, 1, 1) \
590 F(Float32x4RecipApprox, 1, 1) \ 592 F(Float32x4RecipApprox, 1, 1) \
591 F(Float32x4RecipSqrtApprox, 1, 1) \ 593 F(Float32x4RecipSqrtApprox, 1, 1) \
592 F(Float32x4Add, 2, 1) \ 594 F(Float32x4Add, 2, 1) \
593 F(Float32x4Sub, 2, 1) \ 595 F(Float32x4Sub, 2, 1) \
594 F(Float32x4Mul, 2, 1) \ 596 F(Float32x4Mul, 2, 1) \
595 F(Float32x4Div, 2, 1) \ 597 F(Float32x4Div, 2, 1) \
596 F(Float32x4Min, 2, 1) \ 598 F(Float32x4Min, 2, 1) \
597 F(Float32x4Max, 2, 1) \ 599 F(Float32x4Max, 2, 1) \
598 F(Float32x4MinNum, 2, 1) \ 600 F(Float32x4MinNum, 2, 1) \
599 F(Float32x4MaxNum, 2, 1) \ 601 F(Float32x4MaxNum, 2, 1) \
600 F(Float32x4Equal, 2, 1) \ 602 F(Float32x4Equal, 2, 1) \
601 F(Float32x4NotEqual, 2, 1) \ 603 F(Float32x4NotEqual, 2, 1) \
602 F(Float32x4LessThan, 2, 1) \ 604 F(Float32x4LessThan, 2, 1) \
603 F(Float32x4LessThanOrEqual, 2, 1) \ 605 F(Float32x4LessThanOrEqual, 2, 1) \
604 F(Float32x4GreaterThan, 2, 1) \ 606 F(Float32x4GreaterThan, 2, 1) \
605 F(Float32x4GreaterThanOrEqual, 2, 1) \ 607 F(Float32x4GreaterThanOrEqual, 2, 1) \
606 F(Float32x4Select, 3, 1) \ 608 F(Float32x4Select, 3, 1) \
607 F(Float32x4Swizzle, 5, 1) \ 609 F(Float32x4Swizzle, 5, 1) \
608 F(Float32x4Shuffle, 6, 1) \ 610 F(Float32x4Shuffle, 6, 1) \
609 F(Float32x4FromInt32x4, 1, 1) \ 611 F(Float32x4FromInt32x4, 1, 1) \
610 F(Float32x4FromUint32x4, 1, 1) \ 612 F(Float32x4FromUint32x4, 1, 1) \
611 F(Float32x4FromInt32x4Bits, 1, 1) \ 613 F(Float32x4FromInt32x4Bits, 1, 1) \
612 F(Float32x4FromUint32x4Bits, 1, 1) \ 614 F(Float32x4FromUint32x4Bits, 1, 1) \
613 F(Float32x4FromInt16x8Bits, 1, 1) \ 615 F(Float32x4FromInt16x8Bits, 1, 1) \
614 F(Float32x4FromUint16x8Bits, 1, 1) \ 616 F(Float32x4FromUint16x8Bits, 1, 1) \
615 F(Float32x4FromInt8x16Bits, 1, 1) \ 617 F(Float32x4FromInt8x16Bits, 1, 1) \
616 F(Float32x4FromUint8x16Bits, 1, 1) \ 618 F(Float32x4FromUint8x16Bits, 1, 1) \
617 F(Float32x4Load, 2, 1) \ 619 F(Float32x4Load, 2, 1) \
618 F(Float32x4Load1, 2, 1) \ 620 F(Float32x4Load1, 2, 1) \
619 F(Float32x4Load2, 2, 1) \ 621 F(Float32x4Load2, 2, 1) \
620 F(Float32x4Load3, 2, 1) \ 622 F(Float32x4Load3, 2, 1) \
621 F(Float32x4Store, 3, 1) \ 623 F(Float32x4Store, 3, 1) \
622 F(Float32x4Store1, 3, 1) \ 624 F(Float32x4Store1, 3, 1) \
623 F(Float32x4Store2, 3, 1) \ 625 F(Float32x4Store2, 3, 1) \
624 F(Float32x4Store3, 3, 1) \ 626 F(Float32x4Store3, 3, 1) \
625 F(Int32x4Check, 1, 1) \ 627 F(Int32x4Check, 1, 1) \
626 F(Int32x4ExtractLane, 2, 1) \ 628 F(Int32x4ExtractLane, 2, 1) \
627 F(Int32x4ReplaceLane, 3, 1) \ 629 F(Int32x4ReplaceLane, 3, 1) \
628 F(Int32x4Neg, 1, 1) \ 630 F(Int32x4Neg, 1, 1) \
629 F(Int32x4Add, 2, 1) \ 631 F(Int32x4Add, 2, 1) \
630 F(Int32x4Sub, 2, 1) \ 632 F(Int32x4Sub, 2, 1) \
631 F(Int32x4Mul, 2, 1) \ 633 F(Int32x4Mul, 2, 1) \
632 F(Int32x4Min, 2, 1) \ 634 F(Int32x4Min, 2, 1) \
633 F(Int32x4Max, 2, 1) \ 635 F(Int32x4Max, 2, 1) \
634 F(Int32x4And, 2, 1) \ 636 F(Int32x4And, 2, 1) \
635 F(Int32x4Or, 2, 1) \ 637 F(Int32x4Or, 2, 1) \
636 F(Int32x4Xor, 2, 1) \ 638 F(Int32x4Xor, 2, 1) \
637 F(Int32x4Not, 1, 1) \ 639 F(Int32x4Not, 1, 1) \
638 F(Int32x4ShiftLeftByScalar, 2, 1) \ 640 F(Int32x4ShiftLeftByScalar, 2, 1) \
639 F(Int32x4ShiftRightByScalar, 2, 1) \ 641 F(Int32x4ShiftRightByScalar, 2, 1) \
640 F(Int32x4Equal, 2, 1) \ 642 F(Int32x4Equal, 2, 1) \
641 F(Int32x4NotEqual, 2, 1) \ 643 F(Int32x4NotEqual, 2, 1) \
642 F(Int32x4LessThan, 2, 1) \ 644 F(Int32x4LessThan, 2, 1) \
643 F(Int32x4LessThanOrEqual, 2, 1) \ 645 F(Int32x4LessThanOrEqual, 2, 1) \
644 F(Int32x4GreaterThan, 2, 1) \ 646 F(Int32x4GreaterThan, 2, 1) \
645 F(Int32x4GreaterThanOrEqual, 2, 1) \ 647 F(Int32x4GreaterThanOrEqual, 2, 1) \
646 F(Int32x4Select, 3, 1) \ 648 F(Int32x4Select, 3, 1) \
647 F(Int32x4Swizzle, 5, 1) \ 649 F(Int32x4Swizzle, 5, 1) \
648 F(Int32x4Shuffle, 6, 1) \ 650 F(Int32x4Shuffle, 6, 1) \
649 F(Int32x4FromFloat32x4, 1, 1) \ 651 F(Int32x4FromFloat32x4, 1, 1) \
650 F(Int32x4FromUint32x4, 1, 1) \ 652 F(Int32x4FromUint32x4, 1, 1) \
651 F(Int32x4FromFloat32x4Bits, 1, 1) \ 653 F(Int32x4FromFloat32x4Bits, 1, 1) \
652 F(Int32x4FromUint32x4Bits, 1, 1) \ 654 F(Int32x4FromUint32x4Bits, 1, 1) \
653 F(Int32x4FromInt16x8Bits, 1, 1) \ 655 F(Int32x4FromInt16x8Bits, 1, 1) \
654 F(Int32x4FromUint16x8Bits, 1, 1) \ 656 F(Int32x4FromUint16x8Bits, 1, 1) \
655 F(Int32x4FromInt8x16Bits, 1, 1) \ 657 F(Int32x4FromInt8x16Bits, 1, 1) \
656 F(Int32x4FromUint8x16Bits, 1, 1) \ 658 F(Int32x4FromUint8x16Bits, 1, 1) \
657 F(Int32x4Load, 2, 1) \ 659 F(Int32x4Load, 2, 1) \
658 F(Int32x4Load1, 2, 1) \ 660 F(Int32x4Load1, 2, 1) \
659 F(Int32x4Load2, 2, 1) \ 661 F(Int32x4Load2, 2, 1) \
660 F(Int32x4Load3, 2, 1) \ 662 F(Int32x4Load3, 2, 1) \
661 F(Int32x4Store, 3, 1) \ 663 F(Int32x4Store, 3, 1) \
662 F(Int32x4Store1, 3, 1) \ 664 F(Int32x4Store1, 3, 1) \
663 F(Int32x4Store2, 3, 1) \ 665 F(Int32x4Store2, 3, 1) \
664 F(Int32x4Store3, 3, 1) \ 666 F(Int32x4Store3, 3, 1) \
665 F(Uint32x4Check, 1, 1) \ 667 F(Uint32x4Check, 1, 1) \
666 F(Uint32x4ExtractLane, 2, 1) \ 668 F(Uint32x4ExtractLane, 2, 1) \
667 F(Uint32x4ReplaceLane, 3, 1) \ 669 F(Uint32x4ReplaceLane, 3, 1) \
668 F(Uint32x4Add, 2, 1) \ 670 F(Uint32x4Add, 2, 1) \
669 F(Uint32x4Sub, 2, 1) \ 671 F(Uint32x4Sub, 2, 1) \
670 F(Uint32x4Mul, 2, 1) \ 672 F(Uint32x4Mul, 2, 1) \
671 F(Uint32x4Min, 2, 1) \ 673 F(Uint32x4Min, 2, 1) \
672 F(Uint32x4Max, 2, 1) \ 674 F(Uint32x4Max, 2, 1) \
673 F(Uint32x4And, 2, 1) \ 675 F(Uint32x4And, 2, 1) \
674 F(Uint32x4Or, 2, 1) \ 676 F(Uint32x4Or, 2, 1) \
675 F(Uint32x4Xor, 2, 1) \ 677 F(Uint32x4Xor, 2, 1) \
676 F(Uint32x4Not, 1, 1) \ 678 F(Uint32x4Not, 1, 1) \
677 F(Uint32x4ShiftLeftByScalar, 2, 1) \ 679 F(Uint32x4ShiftLeftByScalar, 2, 1) \
678 F(Uint32x4ShiftRightByScalar, 2, 1) \ 680 F(Uint32x4ShiftRightByScalar, 2, 1) \
679 F(Uint32x4Equal, 2, 1) \ 681 F(Uint32x4Equal, 2, 1) \
680 F(Uint32x4NotEqual, 2, 1) \ 682 F(Uint32x4NotEqual, 2, 1) \
681 F(Uint32x4LessThan, 2, 1) \ 683 F(Uint32x4LessThan, 2, 1) \
682 F(Uint32x4LessThanOrEqual, 2, 1) \ 684 F(Uint32x4LessThanOrEqual, 2, 1) \
683 F(Uint32x4GreaterThan, 2, 1) \ 685 F(Uint32x4GreaterThan, 2, 1) \
684 F(Uint32x4GreaterThanOrEqual, 2, 1) \ 686 F(Uint32x4GreaterThanOrEqual, 2, 1) \
685 F(Uint32x4Select, 3, 1) \ 687 F(Uint32x4Select, 3, 1) \
686 F(Uint32x4Swizzle, 5, 1) \ 688 F(Uint32x4Swizzle, 5, 1) \
687 F(Uint32x4Shuffle, 6, 1) \ 689 F(Uint32x4Shuffle, 6, 1) \
688 F(Uint32x4FromFloat32x4, 1, 1) \ 690 F(Uint32x4FromFloat32x4, 1, 1) \
689 F(Uint32x4FromInt32x4, 1, 1) \ 691 F(Uint32x4FromInt32x4, 1, 1) \
690 F(Uint32x4FromFloat32x4Bits, 1, 1) \ 692 F(Uint32x4FromFloat32x4Bits, 1, 1) \
691 F(Uint32x4FromInt32x4Bits, 1, 1) \ 693 F(Uint32x4FromInt32x4Bits, 1, 1) \
692 F(Uint32x4FromInt16x8Bits, 1, 1) \ 694 F(Uint32x4FromInt16x8Bits, 1, 1) \
693 F(Uint32x4FromUint16x8Bits, 1, 1) \ 695 F(Uint32x4FromUint16x8Bits, 1, 1) \
694 F(Uint32x4FromInt8x16Bits, 1, 1) \ 696 F(Uint32x4FromInt8x16Bits, 1, 1) \
695 F(Uint32x4FromUint8x16Bits, 1, 1) \ 697 F(Uint32x4FromUint8x16Bits, 1, 1) \
696 F(Uint32x4Load, 2, 1) \ 698 F(Uint32x4Load, 2, 1) \
697 F(Uint32x4Load1, 2, 1) \ 699 F(Uint32x4Load1, 2, 1) \
698 F(Uint32x4Load2, 2, 1) \ 700 F(Uint32x4Load2, 2, 1) \
699 F(Uint32x4Load3, 2, 1) \ 701 F(Uint32x4Load3, 2, 1) \
700 F(Uint32x4Store, 3, 1) \ 702 F(Uint32x4Store, 3, 1) \
701 F(Uint32x4Store1, 3, 1) \ 703 F(Uint32x4Store1, 3, 1) \
702 F(Uint32x4Store2, 3, 1) \ 704 F(Uint32x4Store2, 3, 1) \
703 F(Uint32x4Store3, 3, 1) \ 705 F(Uint32x4Store3, 3, 1) \
704 F(Bool32x4Check, 1, 1) \ 706 F(Bool32x4Check, 1, 1) \
705 F(Bool32x4ExtractLane, 2, 1) \ 707 F(Bool32x4ExtractLane, 2, 1) \
706 F(Bool32x4ReplaceLane, 3, 1) \ 708 F(Bool32x4ReplaceLane, 3, 1) \
707 F(Bool32x4And, 2, 1) \ 709 F(Bool32x4And, 2, 1) \
708 F(Bool32x4Or, 2, 1) \ 710 F(Bool32x4Or, 2, 1) \
709 F(Bool32x4Xor, 2, 1) \ 711 F(Bool32x4Xor, 2, 1) \
710 F(Bool32x4Not, 1, 1) \ 712 F(Bool32x4Not, 1, 1) \
711 F(Bool32x4AnyTrue, 1, 1) \ 713 F(Bool32x4AnyTrue, 1, 1) \
712 F(Bool32x4AllTrue, 1, 1) \ 714 F(Bool32x4AllTrue, 1, 1) \
713 F(Bool32x4Swizzle, 5, 1) \ 715 F(Bool32x4Swizzle, 5, 1) \
714 F(Bool32x4Shuffle, 6, 1) \ 716 F(Bool32x4Shuffle, 6, 1) \
715 F(Int16x8Check, 1, 1) \ 717 F(Bool32x4Equal, 2, 1) \
716 F(Int16x8ExtractLane, 2, 1) \ 718 F(Bool32x4NotEqual, 2, 1) \
717 F(Int16x8ReplaceLane, 3, 1) \ 719 F(Int16x8Check, 1, 1) \
718 F(Int16x8Neg, 1, 1) \ 720 F(Int16x8ExtractLane, 2, 1) \
719 F(Int16x8Add, 2, 1) \ 721 F(Int16x8ReplaceLane, 3, 1) \
720 F(Int16x8AddSaturate, 2, 1) \ 722 F(Int16x8Neg, 1, 1) \
721 F(Int16x8Sub, 2, 1) \ 723 F(Int16x8Add, 2, 1) \
722 F(Int16x8SubSaturate, 2, 1) \ 724 F(Int16x8AddSaturate, 2, 1) \
723 F(Int16x8Mul, 2, 1) \ 725 F(Int16x8Sub, 2, 1) \
724 F(Int16x8Min, 2, 1) \ 726 F(Int16x8SubSaturate, 2, 1) \
725 F(Int16x8Max, 2, 1) \ 727 F(Int16x8Mul, 2, 1) \
726 F(Int16x8And, 2, 1) \ 728 F(Int16x8Min, 2, 1) \
727 F(Int16x8Or, 2, 1) \ 729 F(Int16x8Max, 2, 1) \
728 F(Int16x8Xor, 2, 1) \ 730 F(Int16x8And, 2, 1) \
729 F(Int16x8Not, 1, 1) \ 731 F(Int16x8Or, 2, 1) \
730 F(Int16x8ShiftLeftByScalar, 2, 1) \ 732 F(Int16x8Xor, 2, 1) \
731 F(Int16x8ShiftRightByScalar, 2, 1) \ 733 F(Int16x8Not, 1, 1) \
732 F(Int16x8Equal, 2, 1) \ 734 F(Int16x8ShiftLeftByScalar, 2, 1) \
733 F(Int16x8NotEqual, 2, 1) \ 735 F(Int16x8ShiftRightByScalar, 2, 1) \
734 F(Int16x8LessThan, 2, 1) \ 736 F(Int16x8Equal, 2, 1) \
735 F(Int16x8LessThanOrEqual, 2, 1) \ 737 F(Int16x8NotEqual, 2, 1) \
736 F(Int16x8GreaterThan, 2, 1) \ 738 F(Int16x8LessThan, 2, 1) \
737 F(Int16x8GreaterThanOrEqual, 2, 1) \ 739 F(Int16x8LessThanOrEqual, 2, 1) \
738 F(Int16x8Select, 3, 1) \ 740 F(Int16x8GreaterThan, 2, 1) \
739 F(Int16x8Swizzle, 9, 1) \ 741 F(Int16x8GreaterThanOrEqual, 2, 1) \
740 F(Int16x8Shuffle, 10, 1) \ 742 F(Int16x8Select, 3, 1) \
741 F(Int16x8FromUint16x8, 1, 1) \ 743 F(Int16x8Swizzle, 9, 1) \
742 F(Int16x8FromFloat32x4Bits, 1, 1) \ 744 F(Int16x8Shuffle, 10, 1) \
743 F(Int16x8FromInt32x4Bits, 1, 1) \ 745 F(Int16x8FromUint16x8, 1, 1) \
744 F(Int16x8FromUint32x4Bits, 1, 1) \ 746 F(Int16x8FromFloat32x4Bits, 1, 1) \
745 F(Int16x8FromUint16x8Bits, 1, 1) \ 747 F(Int16x8FromInt32x4Bits, 1, 1) \
746 F(Int16x8FromInt8x16Bits, 1, 1) \ 748 F(Int16x8FromUint32x4Bits, 1, 1) \
747 F(Int16x8FromUint8x16Bits, 1, 1) \ 749 F(Int16x8FromUint16x8Bits, 1, 1) \
748 F(Int16x8Load, 2, 1) \ 750 F(Int16x8FromInt8x16Bits, 1, 1) \
749 F(Int16x8Store, 3, 1) \ 751 F(Int16x8FromUint8x16Bits, 1, 1) \
750 F(Uint16x8Check, 1, 1) \ 752 F(Int16x8Load, 2, 1) \
751 F(Uint16x8ExtractLane, 2, 1) \ 753 F(Int16x8Store, 3, 1) \
752 F(Uint16x8ReplaceLane, 3, 1) \ 754 F(Uint16x8Check, 1, 1) \
753 F(Uint16x8Add, 2, 1) \ 755 F(Uint16x8ExtractLane, 2, 1) \
754 F(Uint16x8AddSaturate, 2, 1) \ 756 F(Uint16x8ReplaceLane, 3, 1) \
755 F(Uint16x8Sub, 2, 1) \ 757 F(Uint16x8Add, 2, 1) \
756 F(Uint16x8SubSaturate, 2, 1) \ 758 F(Uint16x8AddSaturate, 2, 1) \
757 F(Uint16x8Mul, 2, 1) \ 759 F(Uint16x8Sub, 2, 1) \
758 F(Uint16x8Min, 2, 1) \ 760 F(Uint16x8SubSaturate, 2, 1) \
759 F(Uint16x8Max, 2, 1) \ 761 F(Uint16x8Mul, 2, 1) \
760 F(Uint16x8And, 2, 1) \ 762 F(Uint16x8Min, 2, 1) \
761 F(Uint16x8Or, 2, 1) \ 763 F(Uint16x8Max, 2, 1) \
762 F(Uint16x8Xor, 2, 1) \ 764 F(Uint16x8And, 2, 1) \
763 F(Uint16x8Not, 1, 1) \ 765 F(Uint16x8Or, 2, 1) \
764 F(Uint16x8ShiftLeftByScalar, 2, 1) \ 766 F(Uint16x8Xor, 2, 1) \
765 F(Uint16x8ShiftRightByScalar, 2, 1) \ 767 F(Uint16x8Not, 1, 1) \
766 F(Uint16x8Equal, 2, 1) \ 768 F(Uint16x8ShiftLeftByScalar, 2, 1) \
767 F(Uint16x8NotEqual, 2, 1) \ 769 F(Uint16x8ShiftRightByScalar, 2, 1) \
768 F(Uint16x8LessThan, 2, 1) \ 770 F(Uint16x8Equal, 2, 1) \
769 F(Uint16x8LessThanOrEqual, 2, 1) \ 771 F(Uint16x8NotEqual, 2, 1) \
770 F(Uint16x8GreaterThan, 2, 1) \ 772 F(Uint16x8LessThan, 2, 1) \
771 F(Uint16x8GreaterThanOrEqual, 2, 1) \ 773 F(Uint16x8LessThanOrEqual, 2, 1) \
772 F(Uint16x8Select, 3, 1) \ 774 F(Uint16x8GreaterThan, 2, 1) \
773 F(Uint16x8Swizzle, 9, 1) \ 775 F(Uint16x8GreaterThanOrEqual, 2, 1) \
774 F(Uint16x8Shuffle, 10, 1) \ 776 F(Uint16x8Select, 3, 1) \
775 F(Uint16x8FromInt16x8, 1, 1) \ 777 F(Uint16x8Swizzle, 9, 1) \
776 F(Uint16x8FromFloat32x4Bits, 1, 1) \ 778 F(Uint16x8Shuffle, 10, 1) \
777 F(Uint16x8FromInt32x4Bits, 1, 1) \ 779 F(Uint16x8FromInt16x8, 1, 1) \
778 F(Uint16x8FromUint32x4Bits, 1, 1) \ 780 F(Uint16x8FromFloat32x4Bits, 1, 1) \
779 F(Uint16x8FromInt16x8Bits, 1, 1) \ 781 F(Uint16x8FromInt32x4Bits, 1, 1) \
780 F(Uint16x8FromInt8x16Bits, 1, 1) \ 782 F(Uint16x8FromUint32x4Bits, 1, 1) \
781 F(Uint16x8FromUint8x16Bits, 1, 1) \ 783 F(Uint16x8FromInt16x8Bits, 1, 1) \
782 F(Uint16x8Load, 2, 1) \ 784 F(Uint16x8FromInt8x16Bits, 1, 1) \
783 F(Uint16x8Store, 3, 1) \ 785 F(Uint16x8FromUint8x16Bits, 1, 1) \
784 F(Bool16x8Check, 1, 1) \ 786 F(Uint16x8Load, 2, 1) \
785 F(Bool16x8ExtractLane, 2, 1) \ 787 F(Uint16x8Store, 3, 1) \
786 F(Bool16x8ReplaceLane, 3, 1) \ 788 F(Bool16x8Check, 1, 1) \
787 F(Bool16x8And, 2, 1) \ 789 F(Bool16x8ExtractLane, 2, 1) \
788 F(Bool16x8Or, 2, 1) \ 790 F(Bool16x8ReplaceLane, 3, 1) \
789 F(Bool16x8Xor, 2, 1) \ 791 F(Bool16x8And, 2, 1) \
790 F(Bool16x8Not, 1, 1) \ 792 F(Bool16x8Or, 2, 1) \
791 F(Bool16x8AnyTrue, 1, 1) \ 793 F(Bool16x8Xor, 2, 1) \
792 F(Bool16x8AllTrue, 1, 1) \ 794 F(Bool16x8Not, 1, 1) \
793 F(Bool16x8Swizzle, 9, 1) \ 795 F(Bool16x8AnyTrue, 1, 1) \
794 F(Bool16x8Shuffle, 10, 1) \ 796 F(Bool16x8AllTrue, 1, 1) \
795 F(Int8x16Check, 1, 1) \ 797 F(Bool16x8Swizzle, 9, 1) \
796 F(Int8x16ExtractLane, 2, 1) \ 798 F(Bool16x8Shuffle, 10, 1) \
797 F(Int8x16ReplaceLane, 3, 1) \ 799 F(Bool16x8Equal, 2, 1) \
798 F(Int8x16Neg, 1, 1) \ 800 F(Bool16x8NotEqual, 2, 1) \
799 F(Int8x16Add, 2, 1) \ 801 F(Int8x16Check, 1, 1) \
800 F(Int8x16AddSaturate, 2, 1) \ 802 F(Int8x16ExtractLane, 2, 1) \
801 F(Int8x16Sub, 2, 1) \ 803 F(Int8x16ReplaceLane, 3, 1) \
802 F(Int8x16SubSaturate, 2, 1) \ 804 F(Int8x16Neg, 1, 1) \
803 F(Int8x16Mul, 2, 1) \ 805 F(Int8x16Add, 2, 1) \
804 F(Int8x16Min, 2, 1) \ 806 F(Int8x16AddSaturate, 2, 1) \
805 F(Int8x16Max, 2, 1) \ 807 F(Int8x16Sub, 2, 1) \
806 F(Int8x16And, 2, 1) \ 808 F(Int8x16SubSaturate, 2, 1) \
807 F(Int8x16Or, 2, 1) \ 809 F(Int8x16Mul, 2, 1) \
808 F(Int8x16Xor, 2, 1) \ 810 F(Int8x16Min, 2, 1) \
809 F(Int8x16Not, 1, 1) \ 811 F(Int8x16Max, 2, 1) \
810 F(Int8x16ShiftLeftByScalar, 2, 1) \ 812 F(Int8x16And, 2, 1) \
811 F(Int8x16ShiftRightByScalar, 2, 1) \ 813 F(Int8x16Or, 2, 1) \
812 F(Int8x16Equal, 2, 1) \ 814 F(Int8x16Xor, 2, 1) \
813 F(Int8x16NotEqual, 2, 1) \ 815 F(Int8x16Not, 1, 1) \
814 F(Int8x16LessThan, 2, 1) \ 816 F(Int8x16ShiftLeftByScalar, 2, 1) \
815 F(Int8x16LessThanOrEqual, 2, 1) \ 817 F(Int8x16ShiftRightByScalar, 2, 1) \
816 F(Int8x16GreaterThan, 2, 1) \ 818 F(Int8x16Equal, 2, 1) \
817 F(Int8x16GreaterThanOrEqual, 2, 1) \ 819 F(Int8x16NotEqual, 2, 1) \
818 F(Int8x16Select, 3, 1) \ 820 F(Int8x16LessThan, 2, 1) \
819 F(Int8x16Swizzle, 17, 1) \ 821 F(Int8x16LessThanOrEqual, 2, 1) \
820 F(Int8x16Shuffle, 18, 1) \ 822 F(Int8x16GreaterThan, 2, 1) \
821 F(Int8x16FromUint8x16, 1, 1) \ 823 F(Int8x16GreaterThanOrEqual, 2, 1) \
822 F(Int8x16FromFloat32x4Bits, 1, 1) \ 824 F(Int8x16Select, 3, 1) \
823 F(Int8x16FromInt32x4Bits, 1, 1) \ 825 F(Int8x16Swizzle, 17, 1) \
824 F(Int8x16FromUint32x4Bits, 1, 1) \ 826 F(Int8x16Shuffle, 18, 1) \
825 F(Int8x16FromInt16x8Bits, 1, 1) \ 827 F(Int8x16FromUint8x16, 1, 1) \
826 F(Int8x16FromUint16x8Bits, 1, 1) \ 828 F(Int8x16FromFloat32x4Bits, 1, 1) \
827 F(Int8x16FromUint8x16Bits, 1, 1) \ 829 F(Int8x16FromInt32x4Bits, 1, 1) \
828 F(Int8x16Load, 2, 1) \ 830 F(Int8x16FromUint32x4Bits, 1, 1) \
829 F(Int8x16Store, 3, 1) \ 831 F(Int8x16FromInt16x8Bits, 1, 1) \
830 F(Uint8x16Check, 1, 1) \ 832 F(Int8x16FromUint16x8Bits, 1, 1) \
831 F(Uint8x16ExtractLane, 2, 1) \ 833 F(Int8x16FromUint8x16Bits, 1, 1) \
832 F(Uint8x16ReplaceLane, 3, 1) \ 834 F(Int8x16Load, 2, 1) \
833 F(Uint8x16Add, 2, 1) \ 835 F(Int8x16Store, 3, 1) \
834 F(Uint8x16AddSaturate, 2, 1) \ 836 F(Uint8x16Check, 1, 1) \
835 F(Uint8x16Sub, 2, 1) \ 837 F(Uint8x16ExtractLane, 2, 1) \
836 F(Uint8x16SubSaturate, 2, 1) \ 838 F(Uint8x16ReplaceLane, 3, 1) \
837 F(Uint8x16Mul, 2, 1) \ 839 F(Uint8x16Add, 2, 1) \
838 F(Uint8x16Min, 2, 1) \ 840 F(Uint8x16AddSaturate, 2, 1) \
839 F(Uint8x16Max, 2, 1) \ 841 F(Uint8x16Sub, 2, 1) \
840 F(Uint8x16And, 2, 1) \ 842 F(Uint8x16SubSaturate, 2, 1) \
841 F(Uint8x16Or, 2, 1) \ 843 F(Uint8x16Mul, 2, 1) \
842 F(Uint8x16Xor, 2, 1) \ 844 F(Uint8x16Min, 2, 1) \
843 F(Uint8x16Not, 1, 1) \ 845 F(Uint8x16Max, 2, 1) \
844 F(Uint8x16ShiftLeftByScalar, 2, 1) \ 846 F(Uint8x16And, 2, 1) \
845 F(Uint8x16ShiftRightByScalar, 2, 1) \ 847 F(Uint8x16Or, 2, 1) \
846 F(Uint8x16Equal, 2, 1) \ 848 F(Uint8x16Xor, 2, 1) \
847 F(Uint8x16NotEqual, 2, 1) \ 849 F(Uint8x16Not, 1, 1) \
848 F(Uint8x16LessThan, 2, 1) \ 850 F(Uint8x16ShiftLeftByScalar, 2, 1) \
849 F(Uint8x16LessThanOrEqual, 2, 1) \ 851 F(Uint8x16ShiftRightByScalar, 2, 1) \
850 F(Uint8x16GreaterThan, 2, 1) \ 852 F(Uint8x16Equal, 2, 1) \
851 F(Uint8x16GreaterThanOrEqual, 2, 1) \ 853 F(Uint8x16NotEqual, 2, 1) \
852 F(Uint8x16Select, 3, 1) \ 854 F(Uint8x16LessThan, 2, 1) \
853 F(Uint8x16Swizzle, 17, 1) \ 855 F(Uint8x16LessThanOrEqual, 2, 1) \
854 F(Uint8x16Shuffle, 18, 1) \ 856 F(Uint8x16GreaterThan, 2, 1) \
855 F(Uint8x16FromInt8x16, 1, 1) \ 857 F(Uint8x16GreaterThanOrEqual, 2, 1) \
856 F(Uint8x16FromFloat32x4Bits, 1, 1) \ 858 F(Uint8x16Select, 3, 1) \
857 F(Uint8x16FromInt32x4Bits, 1, 1) \ 859 F(Uint8x16Swizzle, 17, 1) \
858 F(Uint8x16FromUint32x4Bits, 1, 1) \ 860 F(Uint8x16Shuffle, 18, 1) \
859 F(Uint8x16FromInt16x8Bits, 1, 1) \ 861 F(Uint8x16FromInt8x16, 1, 1) \
860 F(Uint8x16FromUint16x8Bits, 1, 1) \ 862 F(Uint8x16FromFloat32x4Bits, 1, 1) \
861 F(Uint8x16FromInt8x16Bits, 1, 1) \ 863 F(Uint8x16FromInt32x4Bits, 1, 1) \
862 F(Uint8x16Load, 2, 1) \ 864 F(Uint8x16FromUint32x4Bits, 1, 1) \
863 F(Uint8x16Store, 3, 1) \ 865 F(Uint8x16FromInt16x8Bits, 1, 1) \
864 F(Bool8x16Check, 1, 1) \ 866 F(Uint8x16FromUint16x8Bits, 1, 1) \
865 F(Bool8x16ExtractLane, 2, 1) \ 867 F(Uint8x16FromInt8x16Bits, 1, 1) \
866 F(Bool8x16ReplaceLane, 3, 1) \ 868 F(Uint8x16Load, 2, 1) \
867 F(Bool8x16And, 2, 1) \ 869 F(Uint8x16Store, 3, 1) \
868 F(Bool8x16Or, 2, 1) \ 870 F(Bool8x16Check, 1, 1) \
869 F(Bool8x16Xor, 2, 1) \ 871 F(Bool8x16ExtractLane, 2, 1) \
870 F(Bool8x16Not, 1, 1) \ 872 F(Bool8x16ReplaceLane, 3, 1) \
871 F(Bool8x16AnyTrue, 1, 1) \ 873 F(Bool8x16And, 2, 1) \
872 F(Bool8x16AllTrue, 1, 1) \ 874 F(Bool8x16Or, 2, 1) \
873 F(Bool8x16Swizzle, 17, 1) \ 875 F(Bool8x16Xor, 2, 1) \
874 F(Bool8x16Shuffle, 18, 1) 876 F(Bool8x16Not, 1, 1) \
877 F(Bool8x16AnyTrue, 1, 1) \
878 F(Bool8x16AllTrue, 1, 1) \
879 F(Bool8x16Swizzle, 17, 1) \
880 F(Bool8x16Shuffle, 18, 1) \
881 F(Bool8x16Equal, 2, 1) \
882 F(Bool8x16NotEqual, 2, 1)
875 883
876 884
877 #define FOR_EACH_INTRINSIC_STRINGS(F) \ 885 #define FOR_EACH_INTRINSIC_STRINGS(F) \
878 F(StringReplaceOneCharWithString, 3, 1) \ 886 F(StringReplaceOneCharWithString, 3, 1) \
879 F(StringIndexOf, 3, 1) \ 887 F(StringIndexOf, 3, 1) \
880 F(StringLastIndexOf, 3, 1) \ 888 F(StringLastIndexOf, 3, 1) \
881 F(StringLocaleCompare, 2, 1) \ 889 F(StringLocaleCompare, 2, 1) \
882 F(SubString, 3, 1) \ 890 F(SubString, 3, 1) \
883 F(StringAdd, 2, 1) \ 891 F(StringAdd, 2, 1) \
884 F(InternalizeString, 1, 1) \ 892 F(InternalizeString, 1, 1) \
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
1175 // Used in runtime.cc and hydrogen's VisitArrayLiteral. 1183 // Used in runtime.cc and hydrogen's VisitArrayLiteral.
1176 MUST_USE_RESULT static MaybeHandle<Object> CreateArrayLiteralBoilerplate( 1184 MUST_USE_RESULT static MaybeHandle<Object> CreateArrayLiteralBoilerplate(
1177 Isolate* isolate, Handle<LiteralsArray> literals, 1185 Isolate* isolate, Handle<LiteralsArray> literals,
1178 Handle<FixedArray> elements, bool is_strong); 1186 Handle<FixedArray> elements, bool is_strong);
1179 1187
1180 static MaybeHandle<JSArray> GetInternalProperties(Isolate* isolate, 1188 static MaybeHandle<JSArray> GetInternalProperties(Isolate* isolate,
1181 Handle<Object>); 1189 Handle<Object>);
1182 }; 1190 };
1183 1191
1184 1192
1193 struct RuntimeCallStats {
1194 #define CALL_RUNTIME_COUNTER(name, nargs, ressize) \
1195 uint32_t Count_Runtime_##name; \
1196 base::TimeDelta Time_Runtime_##name;
1197 FOR_EACH_INTRINSIC(CALL_RUNTIME_COUNTER)
1198 #undef CALL_RUNTIME_COUNTER
1199
1200 // Dummy counter for the unexpected stub miss.
1201 uint32_t Count_UnexpectedStubMiss;
1202 base::TimeDelta Time_UnexpectedStubMiss;
1203
1204 bool in_runtime_call = false;
1205
1206 void Reset();
1207 void Print(std::ostream& os);
1208
1209 RuntimeCallStats() { Reset(); }
1210 };
1211
1212
1185 class RuntimeState { 1213 class RuntimeState {
1186 public: 1214 public:
1187 unibrow::Mapping<unibrow::ToUppercase, 128>* to_upper_mapping() { 1215 unibrow::Mapping<unibrow::ToUppercase, 128>* to_upper_mapping() {
1188 return &to_upper_mapping_; 1216 return &to_upper_mapping_;
1189 } 1217 }
1190 unibrow::Mapping<unibrow::ToLowercase, 128>* to_lower_mapping() { 1218 unibrow::Mapping<unibrow::ToLowercase, 128>* to_lower_mapping() {
1191 return &to_lower_mapping_; 1219 return &to_lower_mapping_;
1192 } 1220 }
1193 1221
1194 Runtime::Function* redirected_intrinsic_functions() { 1222 Runtime::Function* redirected_intrinsic_functions() {
1195 return redirected_intrinsic_functions_.get(); 1223 return redirected_intrinsic_functions_.get();
1196 } 1224 }
1197 1225
1198 void set_redirected_intrinsic_functions( 1226 void set_redirected_intrinsic_functions(
1199 Runtime::Function* redirected_intrinsic_functions) { 1227 Runtime::Function* redirected_intrinsic_functions) {
1200 redirected_intrinsic_functions_.Reset(redirected_intrinsic_functions); 1228 redirected_intrinsic_functions_.Reset(redirected_intrinsic_functions);
1201 } 1229 }
1202 1230
1231 RuntimeCallStats* runtime_call_stats() { return &runtime_call_stats_; }
1232
1203 private: 1233 private:
1204 RuntimeState() {} 1234 RuntimeState() {}
1205 unibrow::Mapping<unibrow::ToUppercase, 128> to_upper_mapping_; 1235 unibrow::Mapping<unibrow::ToUppercase, 128> to_upper_mapping_;
1206 unibrow::Mapping<unibrow::ToLowercase, 128> to_lower_mapping_; 1236 unibrow::Mapping<unibrow::ToLowercase, 128> to_lower_mapping_;
1207 1237
1238 RuntimeCallStats runtime_call_stats_;
1239
1208 base::SmartArrayPointer<Runtime::Function> redirected_intrinsic_functions_; 1240 base::SmartArrayPointer<Runtime::Function> redirected_intrinsic_functions_;
1209 1241
1210 friend class Isolate; 1242 friend class Isolate;
1211 friend class Runtime; 1243 friend class Runtime;
1212 1244
1213 DISALLOW_COPY_AND_ASSIGN(RuntimeState); 1245 DISALLOW_COPY_AND_ASSIGN(RuntimeState);
1214 }; 1246 };
1215 1247
1216 1248
1217 std::ostream& operator<<(std::ostream&, Runtime::FunctionId); 1249 std::ostream& operator<<(std::ostream&, Runtime::FunctionId);
1218 1250
1219 //--------------------------------------------------------------------------- 1251 //---------------------------------------------------------------------------
1220 // Constants used by interface to runtime functions. 1252 // Constants used by interface to runtime functions.
1221 1253
1222 class AllocateDoubleAlignFlag : public BitField<bool, 0, 1> {}; 1254 class AllocateDoubleAlignFlag : public BitField<bool, 0, 1> {};
1223 class AllocateTargetSpace : public BitField<AllocationSpace, 1, 3> {}; 1255 class AllocateTargetSpace : public BitField<AllocationSpace, 1, 3> {};
1224 1256
1225 class DeclareGlobalsEvalFlag : public BitField<bool, 0, 1> {}; 1257 class DeclareGlobalsEvalFlag : public BitField<bool, 0, 1> {};
1226 class DeclareGlobalsNativeFlag : public BitField<bool, 1, 1> {}; 1258 class DeclareGlobalsNativeFlag : public BitField<bool, 1, 1> {};
1227 STATIC_ASSERT(LANGUAGE_END == 3); 1259 STATIC_ASSERT(LANGUAGE_END == 3);
1228 class DeclareGlobalsLanguageMode : public BitField<LanguageMode, 2, 2> {}; 1260 class DeclareGlobalsLanguageMode : public BitField<LanguageMode, 2, 2> {};
1229 1261
1230 } // namespace internal 1262 } // namespace internal
1231 } // namespace v8 1263 } // namespace v8
1232 1264
1233 #endif // V8_RUNTIME_RUNTIME_H_ 1265 #endif // V8_RUNTIME_RUNTIME_H_
OLDNEW
« no previous file with comments | « src/isolate.cc ('k') | src/runtime/runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698