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

Side by Side Diff: src/runtime.h

Issue 346413004: Remove distinction between hidden and normal runtime functions (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix natives fuzzing Created 6 years, 6 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
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_H_ 5 #ifndef V8_RUNTIME_H_
6 #define V8_RUNTIME_H_ 6 #define V8_RUNTIME_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/zone.h" 9 #include "src/zone.h"
10 10
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 F(HasFixedInt32Elements, 1, 1) \ 390 F(HasFixedInt32Elements, 1, 1) \
391 F(HasFixedUint32Elements, 1, 1) \ 391 F(HasFixedUint32Elements, 1, 1) \
392 F(HasFixedFloat32Elements, 1, 1) \ 392 F(HasFixedFloat32Elements, 1, 1) \
393 F(HasFixedFloat64Elements, 1, 1) \ 393 F(HasFixedFloat64Elements, 1, 1) \
394 F(HasFastProperties, 1, 1) \ 394 F(HasFastProperties, 1, 1) \
395 F(TransitionElementsKind, 2, 1) \ 395 F(TransitionElementsKind, 2, 1) \
396 F(HaveSameMap, 2, 1) \ 396 F(HaveSameMap, 2, 1) \
397 F(IsJSGlobalProxy, 1, 1) 397 F(IsJSGlobalProxy, 1, 1)
398 398
399 399
400 #define RUNTIME_FUNCTION_LIST_ALWAYS_3(F) \
401 /* String and Regexp */ \
402 F(NumberToStringRT, 1, 1) \
403 F(RegExpConstructResult, 3, 1) \
404 F(RegExpExecRT, 4, 1) \
405 F(StringAdd, 2, 1) \
406 F(SubString, 3, 1) \
407 F(StringCompare, 2, 1) \
408 F(StringCharCodeAtRT, 2, 1) \
409 F(GetFromCache, 2, 1) \
410 \
411 /* Compilation */ \
412 F(CompileUnoptimized, 1, 1) \
413 F(CompileOptimized, 2, 1) \
414 F(TryInstallOptimizedCode, 1, 1) \
415 F(NotifyDeoptimized, 1, 1) \
416 F(NotifyStubFailure, 0, 1) \
417 \
418 /* Utilities */ \
419 F(AllocateInNewSpace, 1, 1) \
420 F(AllocateInTargetSpace, 2, 1) \
421 F(AllocateHeapNumber, 0, 1) \
422 F(NumberToSmi, 1, 1) \
423 F(NumberToStringSkipCache, 1, 1) \
424 \
425 F(NewSloppyArguments, 3, 1) \
426 F(NewStrictArguments, 3, 1) \
427 \
428 /* Harmony generators */ \
429 F(CreateJSGeneratorObject, 0, 1) \
430 F(SuspendJSGeneratorObject, 1, 1) \
431 F(ResumeJSGeneratorObject, 3, 1) \
432 F(ThrowGeneratorStateError, 1, 1) \
433 \
434 /* Arrays */ \
435 F(ArrayConstructor, -1, 1) \
436 F(InternalArrayConstructor, -1, 1) \
437 \
438 /* Literals */ \
439 F(MaterializeRegExpLiteral, 4, 1)\
440 F(CreateObjectLiteral, 4, 1) \
441 F(CreateArrayLiteral, 4, 1) \
442 F(CreateArrayLiteralStubBailout, 3, 1) \
443 \
444 /* Statements */ \
445 F(NewClosure, 3, 1) \
446 F(NewClosureFromStubFailure, 1, 1) \
447 F(NewObject, 1, 1) \
448 F(NewObjectWithAllocationSite, 2, 1) \
449 F(FinalizeInstanceSize, 1, 1) \
450 F(Throw, 1, 1) \
451 F(ReThrow, 1, 1) \
452 F(ThrowReferenceError, 1, 1) \
453 F(ThrowNotDateError, 0, 1) \
454 F(StackGuard, 0, 1) \
455 F(Interrupt, 0, 1) \
456 F(PromoteScheduledException, 0, 1) \
457 \
458 /* Contexts */ \
459 F(NewGlobalContext, 2, 1) \
460 F(NewFunctionContext, 1, 1) \
461 F(PushWithContext, 2, 1) \
462 F(PushCatchContext, 3, 1) \
463 F(PushBlockContext, 2, 1) \
464 F(PushModuleContext, 2, 1) \
465 F(DeleteContextSlot, 2, 1) \
466 F(LoadContextSlot, 2, 2) \
467 F(LoadContextSlotNoReferenceError, 2, 2) \
468 F(StoreContextSlot, 4, 1) \
469 \
470 /* Declarations and initialization */ \
471 F(DeclareGlobals, 3, 1) \
472 F(DeclareModules, 1, 1) \
473 F(DeclareContextSlot, 4, 1) \
474 F(InitializeConstGlobal, 2, 1) \
475 F(InitializeConstContextSlot, 3, 1) \
476 \
477 /* Eval */ \
478 F(ResolvePossiblyDirectEval, 5, 2) \
479 \
480 /* Maths */ \
481 F(MathPowSlow, 2, 1) \
482 F(MathPowRT, 2, 1)
483
484
400 #define RUNTIME_FUNCTION_LIST_DEBUGGER(F) \ 485 #define RUNTIME_FUNCTION_LIST_DEBUGGER(F) \
401 /* Debugger support*/ \ 486 /* Debugger support*/ \
402 F(DebugBreak, 0, 1) \ 487 F(DebugBreak, 0, 1) \
403 F(SetDebugEventListener, 2, 1) \ 488 F(SetDebugEventListener, 2, 1) \
404 F(Break, 0, 1) \ 489 F(Break, 0, 1) \
405 F(DebugGetPropertyDetails, 2, 1) \ 490 F(DebugGetPropertyDetails, 2, 1) \
406 F(DebugGetProperty, 2, 1) \ 491 F(DebugGetProperty, 2, 1) \
407 F(DebugPropertyTypeFromDetails, 1, 1) \ 492 F(DebugPropertyTypeFromDetails, 1, 1) \
408 F(DebugPropertyAttributesFromDetails, 1, 1) \ 493 F(DebugPropertyAttributesFromDetails, 1, 1) \
409 F(DebugPropertyIndexFromDetails, 1, 1) \ 494 F(DebugPropertyIndexFromDetails, 1, 1) \
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 600
516 // ---------------------------------------------------------------------------- 601 // ----------------------------------------------------------------------------
517 // RUNTIME_FUNCTION_LIST defines all runtime functions accessed 602 // RUNTIME_FUNCTION_LIST defines all runtime functions accessed
518 // either directly by id (via the code generator), or indirectly 603 // either directly by id (via the code generator), or indirectly
519 // via a native call by name (from within JS code). 604 // via a native call by name (from within JS code).
520 // Entries have the form F(name, number of arguments, number of return values). 605 // Entries have the form F(name, number of arguments, number of return values).
521 606
522 #define RUNTIME_FUNCTION_LIST(F) \ 607 #define RUNTIME_FUNCTION_LIST(F) \
523 RUNTIME_FUNCTION_LIST_ALWAYS_1(F) \ 608 RUNTIME_FUNCTION_LIST_ALWAYS_1(F) \
524 RUNTIME_FUNCTION_LIST_ALWAYS_2(F) \ 609 RUNTIME_FUNCTION_LIST_ALWAYS_2(F) \
610 RUNTIME_FUNCTION_LIST_ALWAYS_3(F) \
525 RUNTIME_FUNCTION_LIST_DEBUG(F) \ 611 RUNTIME_FUNCTION_LIST_DEBUG(F) \
526 RUNTIME_FUNCTION_LIST_DEBUGGER(F) \ 612 RUNTIME_FUNCTION_LIST_DEBUGGER(F) \
527 RUNTIME_FUNCTION_LIST_I18N_SUPPORT(F) 613 RUNTIME_FUNCTION_LIST_I18N_SUPPORT(F)
528 614
529 // RUNTIME_HIDDEN_FUNCTION_LIST defines all runtime functions accessed
530 // by id from code generator, but not via native call by name.
531 // Entries have the form F(name, number of arguments, number of return values).
532 #define RUNTIME_HIDDEN_FUNCTION_LIST(F) \
533 /* String and Regexp */ \
534 F(NumberToString, 1, 1) \
535 F(RegExpConstructResult, 3, 1) \
536 F(RegExpExec, 4, 1) \
537 F(StringAdd, 2, 1) \
538 F(SubString, 3, 1) \
539 F(StringCompare, 2, 1) \
540 F(StringCharCodeAt, 2, 1) \
541 F(GetFromCache, 2, 1) \
542 \
543 /* Compilation */ \
544 F(CompileUnoptimized, 1, 1) \
545 F(CompileOptimized, 2, 1) \
546 F(TryInstallOptimizedCode, 1, 1) \
547 F(NotifyDeoptimized, 1, 1) \
548 F(NotifyStubFailure, 0, 1) \
549 \
550 /* Utilities */ \
551 F(AllocateInNewSpace, 1, 1) \
552 F(AllocateInTargetSpace, 2, 1) \
553 F(AllocateHeapNumber, 0, 1) \
554 F(NumberToSmi, 1, 1) \
555 F(NumberToStringSkipCache, 1, 1) \
556 \
557 F(NewSloppyArguments, 3, 1) \
558 F(NewStrictArguments, 3, 1) \
559 \
560 /* Harmony generators */ \
561 F(CreateJSGeneratorObject, 0, 1) \
562 F(SuspendJSGeneratorObject, 1, 1) \
563 F(ResumeJSGeneratorObject, 3, 1) \
564 F(ThrowGeneratorStateError, 1, 1) \
565 \
566 /* Arrays */ \
567 F(ArrayConstructor, -1, 1) \
568 F(InternalArrayConstructor, -1, 1) \
569 \
570 /* Literals */ \
571 F(MaterializeRegExpLiteral, 4, 1)\
572 F(CreateObjectLiteral, 4, 1) \
573 F(CreateArrayLiteral, 4, 1) \
574 F(CreateArrayLiteralStubBailout, 3, 1) \
575 \
576 /* Statements */ \
577 F(NewClosure, 3, 1) \
578 F(NewClosureFromStubFailure, 1, 1) \
579 F(NewObject, 1, 1) \
580 F(NewObjectWithAllocationSite, 2, 1) \
581 F(FinalizeInstanceSize, 1, 1) \
582 F(Throw, 1, 1) \
583 F(ReThrow, 1, 1) \
584 F(ThrowReferenceError, 1, 1) \
585 F(ThrowNotDateError, 0, 1) \
586 F(StackGuard, 0, 1) \
587 F(Interrupt, 0, 1) \
588 F(PromoteScheduledException, 0, 1) \
589 \
590 /* Contexts */ \
591 F(NewGlobalContext, 2, 1) \
592 F(NewFunctionContext, 1, 1) \
593 F(PushWithContext, 2, 1) \
594 F(PushCatchContext, 3, 1) \
595 F(PushBlockContext, 2, 1) \
596 F(PushModuleContext, 2, 1) \
597 F(DeleteContextSlot, 2, 1) \
598 F(LoadContextSlot, 2, 2) \
599 F(LoadContextSlotNoReferenceError, 2, 2) \
600 F(StoreContextSlot, 4, 1) \
601 \
602 /* Declarations and initialization */ \
603 F(DeclareGlobals, 3, 1) \
604 F(DeclareModules, 1, 1) \
605 F(DeclareContextSlot, 4, 1) \
606 F(InitializeConstGlobal, 2, 1) \
607 F(InitializeConstContextSlot, 3, 1) \
608 \
609 /* Eval */ \
610 F(ResolvePossiblyDirectEval, 5, 2) \
611 \
612 /* Maths */ \
613 F(MathPowSlow, 2, 1) \
614 F(MathPow, 2, 1)
615
616 // ---------------------------------------------------------------------------- 615 // ----------------------------------------------------------------------------
617 // INLINE_FUNCTION_LIST defines all inlined functions accessed 616 // INLINE_FUNCTION_LIST defines all inlined functions accessed
618 // with a native call of the form %_name from within JS code. 617 // with a native call of the form %_name from within JS code.
619 // Entries have the form F(name, number of arguments, number of return values). 618 // Entries have the form F(name, number of arguments, number of return values).
620 #define INLINE_FUNCTION_LIST(F) \ 619 #define INLINE_FUNCTION_LIST(F) \
621 F(IsSmi, 1, 1) \ 620 F(IsSmi, 1, 1) \
622 F(IsNonNegativeSmi, 1, 1) \ 621 F(IsNonNegativeSmi, 1, 1) \
623 F(IsArray, 1, 1) \ 622 F(IsArray, 1, 1) \
624 F(IsRegExp, 1, 1) \ 623 F(IsRegExp, 1, 1) \
625 F(IsConstructCall, 0, 1) \ 624 F(IsConstructCall, 0, 1) \
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 }; 729 };
731 730
732 731
733 class Runtime : public AllStatic { 732 class Runtime : public AllStatic {
734 public: 733 public:
735 enum FunctionId { 734 enum FunctionId {
736 #define F(name, nargs, ressize) k##name, 735 #define F(name, nargs, ressize) k##name,
737 RUNTIME_FUNCTION_LIST(F) 736 RUNTIME_FUNCTION_LIST(F)
738 INLINE_OPTIMIZED_FUNCTION_LIST(F) 737 INLINE_OPTIMIZED_FUNCTION_LIST(F)
739 #undef F 738 #undef F
740 #define F(name, nargs, ressize) kHidden##name,
741 RUNTIME_HIDDEN_FUNCTION_LIST(F)
742 #undef F
743 #define F(name, nargs, ressize) kInline##name, 739 #define F(name, nargs, ressize) kInline##name,
744 INLINE_FUNCTION_LIST(F) 740 INLINE_FUNCTION_LIST(F)
745 #undef F 741 #undef F
746 #define F(name, nargs, ressize) kInlineOptimized##name, 742 #define F(name, nargs, ressize) kInlineOptimized##name,
747 INLINE_OPTIMIZED_FUNCTION_LIST(F) 743 INLINE_OPTIMIZED_FUNCTION_LIST(F)
748 #undef F 744 #undef F
749 kNumFunctions, 745 kNumFunctions,
750 kFirstInlineFunction = kInlineIsSmi 746 kFirstInlineFunction = kInlineIsSmi
751 }; 747 };
752 748
753 enum IntrinsicType { 749 enum IntrinsicType {
754 RUNTIME, 750 RUNTIME,
755 RUNTIME_HIDDEN,
756 INLINE, 751 INLINE,
757 INLINE_OPTIMIZED 752 INLINE_OPTIMIZED
758 }; 753 };
759 754
760 // Intrinsic function descriptor. 755 // Intrinsic function descriptor.
761 struct Function { 756 struct Function {
762 FunctionId function_id; 757 FunctionId function_id;
763 IntrinsicType intrinsic_type; 758 IntrinsicType intrinsic_type;
764 // The JS name of the function. 759 // The JS name of the function.
765 const char* name; 760 const char* name;
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 class AllocateDoubleAlignFlag: public BitField<bool, 0, 1> {}; 886 class AllocateDoubleAlignFlag: public BitField<bool, 0, 1> {};
892 class AllocateTargetSpace: public BitField<AllocationSpace, 1, 3> {}; 887 class AllocateTargetSpace: public BitField<AllocationSpace, 1, 3> {};
893 888
894 class DeclareGlobalsEvalFlag: public BitField<bool, 0, 1> {}; 889 class DeclareGlobalsEvalFlag: public BitField<bool, 0, 1> {};
895 class DeclareGlobalsNativeFlag: public BitField<bool, 1, 1> {}; 890 class DeclareGlobalsNativeFlag: public BitField<bool, 1, 1> {};
896 class DeclareGlobalsStrictMode: public BitField<StrictMode, 2, 1> {}; 891 class DeclareGlobalsStrictMode: public BitField<StrictMode, 2, 1> {};
897 892
898 } } // namespace v8::internal 893 } } // namespace v8::internal
899 894
900 #endif // V8_RUNTIME_H_ 895 #endif // V8_RUNTIME_H_
OLDNEW
« no previous file with comments | « src/parser.cc ('k') | src/runtime.cc » ('j') | test/fuzz-natives/fuzz-natives.status » ('J')

Powered by Google App Engine
This is Rietveld 408576698