Changeset 219434 in webkit for trunk/Source/JavaScriptCore/assembler/AbstractMacroAssembler.h
- Timestamp:
- Jul 12, 2017, 4:50:01 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/AbstractMacroAssembler.h
r215592 r219434 77 77 }; 78 78 79 template <class AssemblerType , class MacroAssemblerType>79 template <class AssemblerType> 80 80 class AbstractMacroAssembler : public AbstractMacroAssemblerBase { 81 81 public: 82 typedef AbstractMacroAssembler<AssemblerType , MacroAssemblerType> AbstractMacroAssemblerType;82 typedef AbstractMacroAssembler<AssemblerType> AbstractMacroAssemblerType; 83 83 typedef AssemblerType AssemblerType_T; 84 84 … … 372 372 // it may be used as a destination for a jump. 373 373 class Label { 374 template<class TemplateAssemblerType, class TemplateMacroAssemblerType> 375 friend class AbstractMacroAssembler; 374 friend class AbstractMacroAssembler<AssemblerType>; 376 375 friend struct DFG::OSRExit; 377 376 friend class Jump; … … 409 408 // addPtr(TrustedImmPtr(i), a, b) 410 409 class ConvertibleLoadLabel { 411 template<class TemplateAssemblerType, class TemplateMacroAssemblerType> 412 friend class AbstractMacroAssembler; 410 friend class AbstractMacroAssembler<AssemblerType>; 413 411 friend class LinkBuffer; 414 412 … … 433 431 // patched after the code has been generated. 434 432 class DataLabelPtr { 435 template<class TemplateAssemblerType, class TemplateMacroAssemblerType> 436 friend class AbstractMacroAssembler; 433 friend class AbstractMacroAssembler<AssemblerType>; 437 434 friend class LinkBuffer; 438 435 public: … … 457 454 // patched after the code has been generated. 458 455 class DataLabel32 { 459 template<class TemplateAssemblerType, class TemplateMacroAssemblerType> 460 friend class AbstractMacroAssembler; 456 friend class AbstractMacroAssembler<AssemblerType>; 461 457 friend class LinkBuffer; 462 458 public: … … 481 477 // compact immediate to be patched after the code has been generated. 482 478 class DataLabelCompact { 483 template<class TemplateAssemblerType, class TemplateMacroAssemblerType> 484 friend class AbstractMacroAssembler; 479 friend class AbstractMacroAssembler<AssemblerType>; 485 480 friend class LinkBuffer; 486 481 public: … … 512 507 // destination. 513 508 class Call { 514 template<class TemplateAssemblerType, class TemplateMacroAssemblerType> 515 friend class AbstractMacroAssembler; 509 friend class AbstractMacroAssembler<AssemblerType>; 516 510 517 511 public: … … 558 552 // destination. 559 553 class Jump { 560 template<class TemplateAssemblerType, class TemplateMacroAssemblerType> 561 friend class AbstractMacroAssembler; 554 friend class AbstractMacroAssembler<AssemblerType>; 562 555 friend class Call; 563 556 friend struct DFG::OSRExit; … … 843 836 } 844 837 845 #if ENABLE(MASM_PROBE)846 847 struct CPUState {848 #define DECLARE_REGISTER(_type, _regName) \849 _type _regName;850 FOR_EACH_CPU_REGISTER(DECLARE_REGISTER)851 #undef DECLARE_REGISTER852 853 static const char* gprName(RegisterID regID)854 {855 switch (regID) {856 #define DECLARE_REGISTER(_type, _regName) \857 case RegisterID::_regName: \858 return #_regName;859 FOR_EACH_CPU_GPREGISTER(DECLARE_REGISTER)860 #undef DECLARE_REGISTER861 default:862 RELEASE_ASSERT_NOT_REACHED();863 }864 }865 866 static const char* fprName(FPRegisterID regID)867 {868 switch (regID) {869 #define DECLARE_REGISTER(_type, _regName) \870 case FPRegisterID::_regName: \871 return #_regName;872 FOR_EACH_CPU_FPREGISTER(DECLARE_REGISTER)873 #undef DECLARE_REGISTER874 default:875 RELEASE_ASSERT_NOT_REACHED();876 }877 }878 879 void*& gpr(RegisterID regID)880 {881 switch (regID) {882 #define DECLARE_REGISTER(_type, _regName) \883 case RegisterID::_regName: \884 return _regName;885 FOR_EACH_CPU_GPREGISTER(DECLARE_REGISTER)886 #undef DECLARE_REGISTER887 default:888 RELEASE_ASSERT_NOT_REACHED();889 }890 }891 892 double& fpr(FPRegisterID regID)893 {894 switch (regID) {895 #define DECLARE_REGISTER(_type, _regName) \896 case FPRegisterID::_regName: \897 return _regName;898 FOR_EACH_CPU_FPREGISTER(DECLARE_REGISTER)899 #undef DECLARE_REGISTER900 default:901 RELEASE_ASSERT_NOT_REACHED();902 }903 }904 };905 906 // This function emits code to preserve the CPUState (e.g. registers),907 // call a user supplied probe function, and restore the CPUState before908 // continuing with other JIT generated code.909 //910 // The user supplied probe function will be called with a single pointer to911 // a ProbeContext struct (defined above) which contains, among other things,912 // the preserved CPUState. This allows the user probe function to inspect913 // the CPUState at that point in the JIT generated code.914 //915 // If the user probe function alters the register values in the ProbeContext,916 // the altered values will be loaded into the CPU registers when the probe917 // returns.918 //919 // The ProbeContext is stack allocated and is only valid for the duration920 // of the call to the user probe function.921 //922 // Note: probe() should be implemented by the target specific MacroAssembler.923 // This prototype is only provided here to document the interface.924 925 void probe(ProbeFunction, void* arg);926 927 #endif // ENABLE(MASM_PROBE)928 929 838 AssemblerType m_assembler; 930 839 … … 1128 1037 }; // class AbstractMacroAssembler 1129 1038 1130 template <class AssemblerType , class MacroAssemblerType>1131 inline typename AbstractMacroAssembler<AssemblerType , MacroAssemblerType>::BaseIndex1132 AbstractMacroAssembler<AssemblerType , MacroAssemblerType>::Address::indexedBy(1133 typename AbstractMacroAssembler<AssemblerType , MacroAssemblerType>::RegisterID index,1134 typename AbstractMacroAssembler<AssemblerType , MacroAssemblerType>::Scale scale) const1039 template <class AssemblerType> 1040 inline typename AbstractMacroAssembler<AssemblerType>::BaseIndex 1041 AbstractMacroAssembler<AssemblerType>::Address::indexedBy( 1042 typename AbstractMacroAssembler<AssemblerType>::RegisterID index, 1043 typename AbstractMacroAssembler<AssemblerType>::Scale scale) const 1135 1044 { 1136 1045 return BaseIndex(base, index, scale, offset);
Note:
See TracChangeset
for help on using the changeset viewer.