github.com/goplus/reflectx@v1.2.2/icall/icall1024/icall_regabi.go (about)

     1  //go:build ((go1.17 && goexperiment.regabireflect) || (go1.19 && goexperiment.regabiargs) || (go1.18 && amd64) || (go1.19 && arm64) || (go1.19 && ppc64) || (go1.19 && ppc64le) || (go1.20 && riscv64)) && (!js || (js && wasm))
     2  // +build go1.17,goexperiment.regabireflect go1.19,goexperiment.regabiargs go1.18,amd64 go1.19,arm64 go1.19,ppc64 go1.19,ppc64le go1.20,riscv64
     3  // +build !js js,wasm
     4  
     5  package icall
     6  
     7  import (
     8  	"reflect"
     9  	"unsafe"
    10  
    11  	"github.com/goplus/reflectx/abi"
    12  )
    13  
    14  const capacity = 1024
    15  
    16  type methodUsed struct {
    17  	fun reflect.Value
    18  	ptr unsafe.Pointer
    19  }
    20  
    21  type provider struct {
    22  	used map[int]*methodUsed
    23  }
    24  
    25  //go:linkname callReflect reflect.callReflect
    26  func callReflect(ctxt unsafe.Pointer, frame unsafe.Pointer, retValid *bool, r unsafe.Pointer)
    27  
    28  //go:linkname moveMakeFuncArgPtrs reflect.moveMakeFuncArgPtrs
    29  func moveMakeFuncArgPtrs(ctx unsafe.Pointer, r unsafe.Pointer)
    30  
    31  func i_x(c unsafe.Pointer, frame unsafe.Pointer, retValid *bool, r unsafe.Pointer, index int) {
    32  	ptr := mp.used[index].ptr
    33  	moveMakeFuncArgPtrs(ptr, r)
    34  	callReflect(ptr, frame, retValid, r)
    35  }
    36  
    37  func spillArgs()
    38  func unspillArgs()
    39  
    40  func (p *provider) Insert(info *abi.MethodInfo) (unsafe.Pointer, int) {
    41  	var index = -1
    42  	for i := 0; i < capacity; i++ {
    43  		if _, ok := p.used[i]; !ok {
    44  			index = i
    45  			break
    46  		}
    47  	}
    48  	if index == -1 {
    49  		return nil, -1
    50  	}
    51  	var fn reflect.Value
    52  	if (!info.Pointer && !info.OnePtr) || info.Indirect {
    53  		ftyp := info.Func.Type()
    54  		numIn := ftyp.NumIn()
    55  		numOut := ftyp.NumOut()
    56  		in := make([]reflect.Type, numIn, numIn)
    57  		out := make([]reflect.Type, numOut, numOut)
    58  		in[0] = reflect.PtrTo(info.Type)
    59  		for i := 1; i < numIn; i++ {
    60  			in[i] = ftyp.In(i)
    61  		}
    62  		for i := 0; i < numOut; i++ {
    63  			out[i] = ftyp.Out(i)
    64  		}
    65  		ftyp = reflect.FuncOf(in, out, info.Variadic)
    66  		if info.Variadic {
    67  			fn = reflect.MakeFunc(ftyp, func(args []reflect.Value) []reflect.Value {
    68  				args[0] = args[0].Elem()
    69  				return info.Func.CallSlice(args)
    70  			})
    71  		} else {
    72  			fn = reflect.MakeFunc(ftyp, func(args []reflect.Value) []reflect.Value {
    73  				args[0] = args[0].Elem()
    74  				return info.Func.Call(args)
    75  			})
    76  		}
    77  	} else {
    78  		fn = info.Func
    79  	}
    80  	p.used[index] = &methodUsed{
    81  		fun: fn,
    82  		ptr: (*struct{ typ, ptr unsafe.Pointer })(unsafe.Pointer(&fn)).ptr,
    83  	}
    84  	icall := icall_fn[index]
    85  	return unsafe.Pointer(reflect.ValueOf(icall).Pointer()), index
    86  }
    87  
    88  func (p *provider) Remove(indexs []int) {
    89  	for _, n := range indexs {
    90  		delete(p.used, n)
    91  	}
    92  }
    93  
    94  func (p *provider) Available() int {
    95  	return capacity - len(p.used)
    96  }
    97  
    98  func (p *provider) Used() int {
    99  	return len(p.used)
   100  }
   101  
   102  func (p *provider) Cap() int {
   103  	return capacity
   104  }
   105  
   106  func (p *provider) Clear() {
   107  	p.used = make(map[int]*methodUsed)
   108  }
   109  
   110  var (
   111  	mp = &provider{
   112  		used: make(map[int]*methodUsed),
   113  	}
   114  )
   115  
   116  func init() {
   117  	abi.AddMethodProvider(mp)
   118  }
   119  
   120  func f0()
   121  func f1()
   122  func f2()
   123  func f3()
   124  func f4()
   125  func f5()
   126  func f6()
   127  func f7()
   128  func f8()
   129  func f9()
   130  func f10()
   131  func f11()
   132  func f12()
   133  func f13()
   134  func f14()
   135  func f15()
   136  func f16()
   137  func f17()
   138  func f18()
   139  func f19()
   140  func f20()
   141  func f21()
   142  func f22()
   143  func f23()
   144  func f24()
   145  func f25()
   146  func f26()
   147  func f27()
   148  func f28()
   149  func f29()
   150  func f30()
   151  func f31()
   152  func f32()
   153  func f33()
   154  func f34()
   155  func f35()
   156  func f36()
   157  func f37()
   158  func f38()
   159  func f39()
   160  func f40()
   161  func f41()
   162  func f42()
   163  func f43()
   164  func f44()
   165  func f45()
   166  func f46()
   167  func f47()
   168  func f48()
   169  func f49()
   170  func f50()
   171  func f51()
   172  func f52()
   173  func f53()
   174  func f54()
   175  func f55()
   176  func f56()
   177  func f57()
   178  func f58()
   179  func f59()
   180  func f60()
   181  func f61()
   182  func f62()
   183  func f63()
   184  func f64()
   185  func f65()
   186  func f66()
   187  func f67()
   188  func f68()
   189  func f69()
   190  func f70()
   191  func f71()
   192  func f72()
   193  func f73()
   194  func f74()
   195  func f75()
   196  func f76()
   197  func f77()
   198  func f78()
   199  func f79()
   200  func f80()
   201  func f81()
   202  func f82()
   203  func f83()
   204  func f84()
   205  func f85()
   206  func f86()
   207  func f87()
   208  func f88()
   209  func f89()
   210  func f90()
   211  func f91()
   212  func f92()
   213  func f93()
   214  func f94()
   215  func f95()
   216  func f96()
   217  func f97()
   218  func f98()
   219  func f99()
   220  func f100()
   221  func f101()
   222  func f102()
   223  func f103()
   224  func f104()
   225  func f105()
   226  func f106()
   227  func f107()
   228  func f108()
   229  func f109()
   230  func f110()
   231  func f111()
   232  func f112()
   233  func f113()
   234  func f114()
   235  func f115()
   236  func f116()
   237  func f117()
   238  func f118()
   239  func f119()
   240  func f120()
   241  func f121()
   242  func f122()
   243  func f123()
   244  func f124()
   245  func f125()
   246  func f126()
   247  func f127()
   248  func f128()
   249  func f129()
   250  func f130()
   251  func f131()
   252  func f132()
   253  func f133()
   254  func f134()
   255  func f135()
   256  func f136()
   257  func f137()
   258  func f138()
   259  func f139()
   260  func f140()
   261  func f141()
   262  func f142()
   263  func f143()
   264  func f144()
   265  func f145()
   266  func f146()
   267  func f147()
   268  func f148()
   269  func f149()
   270  func f150()
   271  func f151()
   272  func f152()
   273  func f153()
   274  func f154()
   275  func f155()
   276  func f156()
   277  func f157()
   278  func f158()
   279  func f159()
   280  func f160()
   281  func f161()
   282  func f162()
   283  func f163()
   284  func f164()
   285  func f165()
   286  func f166()
   287  func f167()
   288  func f168()
   289  func f169()
   290  func f170()
   291  func f171()
   292  func f172()
   293  func f173()
   294  func f174()
   295  func f175()
   296  func f176()
   297  func f177()
   298  func f178()
   299  func f179()
   300  func f180()
   301  func f181()
   302  func f182()
   303  func f183()
   304  func f184()
   305  func f185()
   306  func f186()
   307  func f187()
   308  func f188()
   309  func f189()
   310  func f190()
   311  func f191()
   312  func f192()
   313  func f193()
   314  func f194()
   315  func f195()
   316  func f196()
   317  func f197()
   318  func f198()
   319  func f199()
   320  func f200()
   321  func f201()
   322  func f202()
   323  func f203()
   324  func f204()
   325  func f205()
   326  func f206()
   327  func f207()
   328  func f208()
   329  func f209()
   330  func f210()
   331  func f211()
   332  func f212()
   333  func f213()
   334  func f214()
   335  func f215()
   336  func f216()
   337  func f217()
   338  func f218()
   339  func f219()
   340  func f220()
   341  func f221()
   342  func f222()
   343  func f223()
   344  func f224()
   345  func f225()
   346  func f226()
   347  func f227()
   348  func f228()
   349  func f229()
   350  func f230()
   351  func f231()
   352  func f232()
   353  func f233()
   354  func f234()
   355  func f235()
   356  func f236()
   357  func f237()
   358  func f238()
   359  func f239()
   360  func f240()
   361  func f241()
   362  func f242()
   363  func f243()
   364  func f244()
   365  func f245()
   366  func f246()
   367  func f247()
   368  func f248()
   369  func f249()
   370  func f250()
   371  func f251()
   372  func f252()
   373  func f253()
   374  func f254()
   375  func f255()
   376  func f256()
   377  func f257()
   378  func f258()
   379  func f259()
   380  func f260()
   381  func f261()
   382  func f262()
   383  func f263()
   384  func f264()
   385  func f265()
   386  func f266()
   387  func f267()
   388  func f268()
   389  func f269()
   390  func f270()
   391  func f271()
   392  func f272()
   393  func f273()
   394  func f274()
   395  func f275()
   396  func f276()
   397  func f277()
   398  func f278()
   399  func f279()
   400  func f280()
   401  func f281()
   402  func f282()
   403  func f283()
   404  func f284()
   405  func f285()
   406  func f286()
   407  func f287()
   408  func f288()
   409  func f289()
   410  func f290()
   411  func f291()
   412  func f292()
   413  func f293()
   414  func f294()
   415  func f295()
   416  func f296()
   417  func f297()
   418  func f298()
   419  func f299()
   420  func f300()
   421  func f301()
   422  func f302()
   423  func f303()
   424  func f304()
   425  func f305()
   426  func f306()
   427  func f307()
   428  func f308()
   429  func f309()
   430  func f310()
   431  func f311()
   432  func f312()
   433  func f313()
   434  func f314()
   435  func f315()
   436  func f316()
   437  func f317()
   438  func f318()
   439  func f319()
   440  func f320()
   441  func f321()
   442  func f322()
   443  func f323()
   444  func f324()
   445  func f325()
   446  func f326()
   447  func f327()
   448  func f328()
   449  func f329()
   450  func f330()
   451  func f331()
   452  func f332()
   453  func f333()
   454  func f334()
   455  func f335()
   456  func f336()
   457  func f337()
   458  func f338()
   459  func f339()
   460  func f340()
   461  func f341()
   462  func f342()
   463  func f343()
   464  func f344()
   465  func f345()
   466  func f346()
   467  func f347()
   468  func f348()
   469  func f349()
   470  func f350()
   471  func f351()
   472  func f352()
   473  func f353()
   474  func f354()
   475  func f355()
   476  func f356()
   477  func f357()
   478  func f358()
   479  func f359()
   480  func f360()
   481  func f361()
   482  func f362()
   483  func f363()
   484  func f364()
   485  func f365()
   486  func f366()
   487  func f367()
   488  func f368()
   489  func f369()
   490  func f370()
   491  func f371()
   492  func f372()
   493  func f373()
   494  func f374()
   495  func f375()
   496  func f376()
   497  func f377()
   498  func f378()
   499  func f379()
   500  func f380()
   501  func f381()
   502  func f382()
   503  func f383()
   504  func f384()
   505  func f385()
   506  func f386()
   507  func f387()
   508  func f388()
   509  func f389()
   510  func f390()
   511  func f391()
   512  func f392()
   513  func f393()
   514  func f394()
   515  func f395()
   516  func f396()
   517  func f397()
   518  func f398()
   519  func f399()
   520  func f400()
   521  func f401()
   522  func f402()
   523  func f403()
   524  func f404()
   525  func f405()
   526  func f406()
   527  func f407()
   528  func f408()
   529  func f409()
   530  func f410()
   531  func f411()
   532  func f412()
   533  func f413()
   534  func f414()
   535  func f415()
   536  func f416()
   537  func f417()
   538  func f418()
   539  func f419()
   540  func f420()
   541  func f421()
   542  func f422()
   543  func f423()
   544  func f424()
   545  func f425()
   546  func f426()
   547  func f427()
   548  func f428()
   549  func f429()
   550  func f430()
   551  func f431()
   552  func f432()
   553  func f433()
   554  func f434()
   555  func f435()
   556  func f436()
   557  func f437()
   558  func f438()
   559  func f439()
   560  func f440()
   561  func f441()
   562  func f442()
   563  func f443()
   564  func f444()
   565  func f445()
   566  func f446()
   567  func f447()
   568  func f448()
   569  func f449()
   570  func f450()
   571  func f451()
   572  func f452()
   573  func f453()
   574  func f454()
   575  func f455()
   576  func f456()
   577  func f457()
   578  func f458()
   579  func f459()
   580  func f460()
   581  func f461()
   582  func f462()
   583  func f463()
   584  func f464()
   585  func f465()
   586  func f466()
   587  func f467()
   588  func f468()
   589  func f469()
   590  func f470()
   591  func f471()
   592  func f472()
   593  func f473()
   594  func f474()
   595  func f475()
   596  func f476()
   597  func f477()
   598  func f478()
   599  func f479()
   600  func f480()
   601  func f481()
   602  func f482()
   603  func f483()
   604  func f484()
   605  func f485()
   606  func f486()
   607  func f487()
   608  func f488()
   609  func f489()
   610  func f490()
   611  func f491()
   612  func f492()
   613  func f493()
   614  func f494()
   615  func f495()
   616  func f496()
   617  func f497()
   618  func f498()
   619  func f499()
   620  func f500()
   621  func f501()
   622  func f502()
   623  func f503()
   624  func f504()
   625  func f505()
   626  func f506()
   627  func f507()
   628  func f508()
   629  func f509()
   630  func f510()
   631  func f511()
   632  func f512()
   633  func f513()
   634  func f514()
   635  func f515()
   636  func f516()
   637  func f517()
   638  func f518()
   639  func f519()
   640  func f520()
   641  func f521()
   642  func f522()
   643  func f523()
   644  func f524()
   645  func f525()
   646  func f526()
   647  func f527()
   648  func f528()
   649  func f529()
   650  func f530()
   651  func f531()
   652  func f532()
   653  func f533()
   654  func f534()
   655  func f535()
   656  func f536()
   657  func f537()
   658  func f538()
   659  func f539()
   660  func f540()
   661  func f541()
   662  func f542()
   663  func f543()
   664  func f544()
   665  func f545()
   666  func f546()
   667  func f547()
   668  func f548()
   669  func f549()
   670  func f550()
   671  func f551()
   672  func f552()
   673  func f553()
   674  func f554()
   675  func f555()
   676  func f556()
   677  func f557()
   678  func f558()
   679  func f559()
   680  func f560()
   681  func f561()
   682  func f562()
   683  func f563()
   684  func f564()
   685  func f565()
   686  func f566()
   687  func f567()
   688  func f568()
   689  func f569()
   690  func f570()
   691  func f571()
   692  func f572()
   693  func f573()
   694  func f574()
   695  func f575()
   696  func f576()
   697  func f577()
   698  func f578()
   699  func f579()
   700  func f580()
   701  func f581()
   702  func f582()
   703  func f583()
   704  func f584()
   705  func f585()
   706  func f586()
   707  func f587()
   708  func f588()
   709  func f589()
   710  func f590()
   711  func f591()
   712  func f592()
   713  func f593()
   714  func f594()
   715  func f595()
   716  func f596()
   717  func f597()
   718  func f598()
   719  func f599()
   720  func f600()
   721  func f601()
   722  func f602()
   723  func f603()
   724  func f604()
   725  func f605()
   726  func f606()
   727  func f607()
   728  func f608()
   729  func f609()
   730  func f610()
   731  func f611()
   732  func f612()
   733  func f613()
   734  func f614()
   735  func f615()
   736  func f616()
   737  func f617()
   738  func f618()
   739  func f619()
   740  func f620()
   741  func f621()
   742  func f622()
   743  func f623()
   744  func f624()
   745  func f625()
   746  func f626()
   747  func f627()
   748  func f628()
   749  func f629()
   750  func f630()
   751  func f631()
   752  func f632()
   753  func f633()
   754  func f634()
   755  func f635()
   756  func f636()
   757  func f637()
   758  func f638()
   759  func f639()
   760  func f640()
   761  func f641()
   762  func f642()
   763  func f643()
   764  func f644()
   765  func f645()
   766  func f646()
   767  func f647()
   768  func f648()
   769  func f649()
   770  func f650()
   771  func f651()
   772  func f652()
   773  func f653()
   774  func f654()
   775  func f655()
   776  func f656()
   777  func f657()
   778  func f658()
   779  func f659()
   780  func f660()
   781  func f661()
   782  func f662()
   783  func f663()
   784  func f664()
   785  func f665()
   786  func f666()
   787  func f667()
   788  func f668()
   789  func f669()
   790  func f670()
   791  func f671()
   792  func f672()
   793  func f673()
   794  func f674()
   795  func f675()
   796  func f676()
   797  func f677()
   798  func f678()
   799  func f679()
   800  func f680()
   801  func f681()
   802  func f682()
   803  func f683()
   804  func f684()
   805  func f685()
   806  func f686()
   807  func f687()
   808  func f688()
   809  func f689()
   810  func f690()
   811  func f691()
   812  func f692()
   813  func f693()
   814  func f694()
   815  func f695()
   816  func f696()
   817  func f697()
   818  func f698()
   819  func f699()
   820  func f700()
   821  func f701()
   822  func f702()
   823  func f703()
   824  func f704()
   825  func f705()
   826  func f706()
   827  func f707()
   828  func f708()
   829  func f709()
   830  func f710()
   831  func f711()
   832  func f712()
   833  func f713()
   834  func f714()
   835  func f715()
   836  func f716()
   837  func f717()
   838  func f718()
   839  func f719()
   840  func f720()
   841  func f721()
   842  func f722()
   843  func f723()
   844  func f724()
   845  func f725()
   846  func f726()
   847  func f727()
   848  func f728()
   849  func f729()
   850  func f730()
   851  func f731()
   852  func f732()
   853  func f733()
   854  func f734()
   855  func f735()
   856  func f736()
   857  func f737()
   858  func f738()
   859  func f739()
   860  func f740()
   861  func f741()
   862  func f742()
   863  func f743()
   864  func f744()
   865  func f745()
   866  func f746()
   867  func f747()
   868  func f748()
   869  func f749()
   870  func f750()
   871  func f751()
   872  func f752()
   873  func f753()
   874  func f754()
   875  func f755()
   876  func f756()
   877  func f757()
   878  func f758()
   879  func f759()
   880  func f760()
   881  func f761()
   882  func f762()
   883  func f763()
   884  func f764()
   885  func f765()
   886  func f766()
   887  func f767()
   888  func f768()
   889  func f769()
   890  func f770()
   891  func f771()
   892  func f772()
   893  func f773()
   894  func f774()
   895  func f775()
   896  func f776()
   897  func f777()
   898  func f778()
   899  func f779()
   900  func f780()
   901  func f781()
   902  func f782()
   903  func f783()
   904  func f784()
   905  func f785()
   906  func f786()
   907  func f787()
   908  func f788()
   909  func f789()
   910  func f790()
   911  func f791()
   912  func f792()
   913  func f793()
   914  func f794()
   915  func f795()
   916  func f796()
   917  func f797()
   918  func f798()
   919  func f799()
   920  func f800()
   921  func f801()
   922  func f802()
   923  func f803()
   924  func f804()
   925  func f805()
   926  func f806()
   927  func f807()
   928  func f808()
   929  func f809()
   930  func f810()
   931  func f811()
   932  func f812()
   933  func f813()
   934  func f814()
   935  func f815()
   936  func f816()
   937  func f817()
   938  func f818()
   939  func f819()
   940  func f820()
   941  func f821()
   942  func f822()
   943  func f823()
   944  func f824()
   945  func f825()
   946  func f826()
   947  func f827()
   948  func f828()
   949  func f829()
   950  func f830()
   951  func f831()
   952  func f832()
   953  func f833()
   954  func f834()
   955  func f835()
   956  func f836()
   957  func f837()
   958  func f838()
   959  func f839()
   960  func f840()
   961  func f841()
   962  func f842()
   963  func f843()
   964  func f844()
   965  func f845()
   966  func f846()
   967  func f847()
   968  func f848()
   969  func f849()
   970  func f850()
   971  func f851()
   972  func f852()
   973  func f853()
   974  func f854()
   975  func f855()
   976  func f856()
   977  func f857()
   978  func f858()
   979  func f859()
   980  func f860()
   981  func f861()
   982  func f862()
   983  func f863()
   984  func f864()
   985  func f865()
   986  func f866()
   987  func f867()
   988  func f868()
   989  func f869()
   990  func f870()
   991  func f871()
   992  func f872()
   993  func f873()
   994  func f874()
   995  func f875()
   996  func f876()
   997  func f877()
   998  func f878()
   999  func f879()
  1000  func f880()
  1001  func f881()
  1002  func f882()
  1003  func f883()
  1004  func f884()
  1005  func f885()
  1006  func f886()
  1007  func f887()
  1008  func f888()
  1009  func f889()
  1010  func f890()
  1011  func f891()
  1012  func f892()
  1013  func f893()
  1014  func f894()
  1015  func f895()
  1016  func f896()
  1017  func f897()
  1018  func f898()
  1019  func f899()
  1020  func f900()
  1021  func f901()
  1022  func f902()
  1023  func f903()
  1024  func f904()
  1025  func f905()
  1026  func f906()
  1027  func f907()
  1028  func f908()
  1029  func f909()
  1030  func f910()
  1031  func f911()
  1032  func f912()
  1033  func f913()
  1034  func f914()
  1035  func f915()
  1036  func f916()
  1037  func f917()
  1038  func f918()
  1039  func f919()
  1040  func f920()
  1041  func f921()
  1042  func f922()
  1043  func f923()
  1044  func f924()
  1045  func f925()
  1046  func f926()
  1047  func f927()
  1048  func f928()
  1049  func f929()
  1050  func f930()
  1051  func f931()
  1052  func f932()
  1053  func f933()
  1054  func f934()
  1055  func f935()
  1056  func f936()
  1057  func f937()
  1058  func f938()
  1059  func f939()
  1060  func f940()
  1061  func f941()
  1062  func f942()
  1063  func f943()
  1064  func f944()
  1065  func f945()
  1066  func f946()
  1067  func f947()
  1068  func f948()
  1069  func f949()
  1070  func f950()
  1071  func f951()
  1072  func f952()
  1073  func f953()
  1074  func f954()
  1075  func f955()
  1076  func f956()
  1077  func f957()
  1078  func f958()
  1079  func f959()
  1080  func f960()
  1081  func f961()
  1082  func f962()
  1083  func f963()
  1084  func f964()
  1085  func f965()
  1086  func f966()
  1087  func f967()
  1088  func f968()
  1089  func f969()
  1090  func f970()
  1091  func f971()
  1092  func f972()
  1093  func f973()
  1094  func f974()
  1095  func f975()
  1096  func f976()
  1097  func f977()
  1098  func f978()
  1099  func f979()
  1100  func f980()
  1101  func f981()
  1102  func f982()
  1103  func f983()
  1104  func f984()
  1105  func f985()
  1106  func f986()
  1107  func f987()
  1108  func f988()
  1109  func f989()
  1110  func f990()
  1111  func f991()
  1112  func f992()
  1113  func f993()
  1114  func f994()
  1115  func f995()
  1116  func f996()
  1117  func f997()
  1118  func f998()
  1119  func f999()
  1120  func f1000()
  1121  func f1001()
  1122  func f1002()
  1123  func f1003()
  1124  func f1004()
  1125  func f1005()
  1126  func f1006()
  1127  func f1007()
  1128  func f1008()
  1129  func f1009()
  1130  func f1010()
  1131  func f1011()
  1132  func f1012()
  1133  func f1013()
  1134  func f1014()
  1135  func f1015()
  1136  func f1016()
  1137  func f1017()
  1138  func f1018()
  1139  func f1019()
  1140  func f1020()
  1141  func f1021()
  1142  func f1022()
  1143  func f1023()
  1144  
  1145  var (
  1146  	icall_fn = []func(){f0,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65,f66,f67,f68,f69,f70,f71,f72,f73,f74,f75,f76,f77,f78,f79,f80,f81,f82,f83,f84,f85,f86,f87,f88,f89,f90,f91,f92,f93,f94,f95,f96,f97,f98,f99,f100,f101,f102,f103,f104,f105,f106,f107,f108,f109,f110,f111,f112,f113,f114,f115,f116,f117,f118,f119,f120,f121,f122,f123,f124,f125,f126,f127,f128,f129,f130,f131,f132,f133,f134,f135,f136,f137,f138,f139,f140,f141,f142,f143,f144,f145,f146,f147,f148,f149,f150,f151,f152,f153,f154,f155,f156,f157,f158,f159,f160,f161,f162,f163,f164,f165,f166,f167,f168,f169,f170,f171,f172,f173,f174,f175,f176,f177,f178,f179,f180,f181,f182,f183,f184,f185,f186,f187,f188,f189,f190,f191,f192,f193,f194,f195,f196,f197,f198,f199,f200,f201,f202,f203,f204,f205,f206,f207,f208,f209,f210,f211,f212,f213,f214,f215,f216,f217,f218,f219,f220,f221,f222,f223,f224,f225,f226,f227,f228,f229,f230,f231,f232,f233,f234,f235,f236,f237,f238,f239,f240,f241,f242,f243,f244,f245,f246,f247,f248,f249,f250,f251,f252,f253,f254,f255,f256,f257,f258,f259,f260,f261,f262,f263,f264,f265,f266,f267,f268,f269,f270,f271,f272,f273,f274,f275,f276,f277,f278,f279,f280,f281,f282,f283,f284,f285,f286,f287,f288,f289,f290,f291,f292,f293,f294,f295,f296,f297,f298,f299,f300,f301,f302,f303,f304,f305,f306,f307,f308,f309,f310,f311,f312,f313,f314,f315,f316,f317,f318,f319,f320,f321,f322,f323,f324,f325,f326,f327,f328,f329,f330,f331,f332,f333,f334,f335,f336,f337,f338,f339,f340,f341,f342,f343,f344,f345,f346,f347,f348,f349,f350,f351,f352,f353,f354,f355,f356,f357,f358,f359,f360,f361,f362,f363,f364,f365,f366,f367,f368,f369,f370,f371,f372,f373,f374,f375,f376,f377,f378,f379,f380,f381,f382,f383,f384,f385,f386,f387,f388,f389,f390,f391,f392,f393,f394,f395,f396,f397,f398,f399,f400,f401,f402,f403,f404,f405,f406,f407,f408,f409,f410,f411,f412,f413,f414,f415,f416,f417,f418,f419,f420,f421,f422,f423,f424,f425,f426,f427,f428,f429,f430,f431,f432,f433,f434,f435,f436,f437,f438,f439,f440,f441,f442,f443,f444,f445,f446,f447,f448,f449,f450,f451,f452,f453,f454,f455,f456,f457,f458,f459,f460,f461,f462,f463,f464,f465,f466,f467,f468,f469,f470,f471,f472,f473,f474,f475,f476,f477,f478,f479,f480,f481,f482,f483,f484,f485,f486,f487,f488,f489,f490,f491,f492,f493,f494,f495,f496,f497,f498,f499,f500,f501,f502,f503,f504,f505,f506,f507,f508,f509,f510,f511,f512,f513,f514,f515,f516,f517,f518,f519,f520,f521,f522,f523,f524,f525,f526,f527,f528,f529,f530,f531,f532,f533,f534,f535,f536,f537,f538,f539,f540,f541,f542,f543,f544,f545,f546,f547,f548,f549,f550,f551,f552,f553,f554,f555,f556,f557,f558,f559,f560,f561,f562,f563,f564,f565,f566,f567,f568,f569,f570,f571,f572,f573,f574,f575,f576,f577,f578,f579,f580,f581,f582,f583,f584,f585,f586,f587,f588,f589,f590,f591,f592,f593,f594,f595,f596,f597,f598,f599,f600,f601,f602,f603,f604,f605,f606,f607,f608,f609,f610,f611,f612,f613,f614,f615,f616,f617,f618,f619,f620,f621,f622,f623,f624,f625,f626,f627,f628,f629,f630,f631,f632,f633,f634,f635,f636,f637,f638,f639,f640,f641,f642,f643,f644,f645,f646,f647,f648,f649,f650,f651,f652,f653,f654,f655,f656,f657,f658,f659,f660,f661,f662,f663,f664,f665,f666,f667,f668,f669,f670,f671,f672,f673,f674,f675,f676,f677,f678,f679,f680,f681,f682,f683,f684,f685,f686,f687,f688,f689,f690,f691,f692,f693,f694,f695,f696,f697,f698,f699,f700,f701,f702,f703,f704,f705,f706,f707,f708,f709,f710,f711,f712,f713,f714,f715,f716,f717,f718,f719,f720,f721,f722,f723,f724,f725,f726,f727,f728,f729,f730,f731,f732,f733,f734,f735,f736,f737,f738,f739,f740,f741,f742,f743,f744,f745,f746,f747,f748,f749,f750,f751,f752,f753,f754,f755,f756,f757,f758,f759,f760,f761,f762,f763,f764,f765,f766,f767,f768,f769,f770,f771,f772,f773,f774,f775,f776,f777,f778,f779,f780,f781,f782,f783,f784,f785,f786,f787,f788,f789,f790,f791,f792,f793,f794,f795,f796,f797,f798,f799,f800,f801,f802,f803,f804,f805,f806,f807,f808,f809,f810,f811,f812,f813,f814,f815,f816,f817,f818,f819,f820,f821,f822,f823,f824,f825,f826,f827,f828,f829,f830,f831,f832,f833,f834,f835,f836,f837,f838,f839,f840,f841,f842,f843,f844,f845,f846,f847,f848,f849,f850,f851,f852,f853,f854,f855,f856,f857,f858,f859,f860,f861,f862,f863,f864,f865,f866,f867,f868,f869,f870,f871,f872,f873,f874,f875,f876,f877,f878,f879,f880,f881,f882,f883,f884,f885,f886,f887,f888,f889,f890,f891,f892,f893,f894,f895,f896,f897,f898,f899,f900,f901,f902,f903,f904,f905,f906,f907,f908,f909,f910,f911,f912,f913,f914,f915,f916,f917,f918,f919,f920,f921,f922,f923,f924,f925,f926,f927,f928,f929,f930,f931,f932,f933,f934,f935,f936,f937,f938,f939,f940,f941,f942,f943,f944,f945,f946,f947,f948,f949,f950,f951,f952,f953,f954,f955,f956,f957,f958,f959,f960,f961,f962,f963,f964,f965,f966,f967,f968,f969,f970,f971,f972,f973,f974,f975,f976,f977,f978,f979,f980,f981,f982,f983,f984,f985,f986,f987,f988,f989,f990,f991,f992,f993,f994,f995,f996,f997,f998,f999,f1000,f1001,f1002,f1003,f1004,f1005,f1006,f1007,f1008,f1009,f1010,f1011,f1012,f1013,f1014,f1015,f1016,f1017,f1018,f1019,f1020,f1021,f1022,f1023}
  1147  )