github.com/n1ghtfa1l/go-vnt@v0.6.4-alpha.6/core/wavm/func_table.go (about) 1 // Copyright 2019 The go-vnt Authors 2 // This file is part of the go-vnt library. 3 // 4 // The go-vnt library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The go-vnt library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the go-vnt library. If not, see <http://www.gnu.org/licenses/>. 16 17 package wavm 18 19 import ( 20 "reflect" 21 22 "github.com/vntchain/vnt-wasm/wasm" 23 ) 24 25 const ( 26 OpNameGetBalanceFromAddress = "GetBalanceFromAddress" 27 OpNameGetBlockNumber = "GetBlockNumber" 28 OpNameGetGas = "GetGas" 29 OpNameGetBlockHash = "GetBlockHash" 30 OpNameGetBlockProduser = "GetBlockProduser" 31 OpNameGetTimestamp = "GetTimestamp" 32 OpNameGetOrigin = "GetOrigin" 33 OpNameGetSender = "GetSender" 34 OpNameGetGasLimit = "GetGasLimit" 35 OpNameGetValue = "GetValue" 36 OpNameSHA3 = "SHA3" 37 OpNameEcrecover = "Ecrecover" 38 OpNameGetContractAddress = "GetContractAddress" 39 OpNameAssert = "Assert" 40 41 OpNameEvent = "Event" 42 43 OpNamePrintAddress = "PrintAddress" 44 OpNamePrintStr = "PrintStr" 45 OpNamePrintQStr = "PrintQStr" 46 OpNamePrintUint64T = "PrintUint64T" 47 OpNamePrintUint32T = "PrintUint32T" 48 OpNamePrintInt64T = "PrintInt64T" 49 OpNamePrintInt32T = "PrintInt32T" 50 OpNamePrintUint256T = "PrintUint256T" 51 52 OpNameFromI64 = "FromI64" 53 OpNameFromU64 = "FromU64" 54 OpNameToI64 = "ToI64" 55 OpNameToU64 = "ToU64" 56 OpNameConcat = "Concat" 57 OpNameEqual = "Equal" 58 59 OpNameSendFromContract = "SendFromContract" 60 OpNameTransferFromContract = "TransferFromContract" 61 62 OpNameContractCall = "ContractCall" 63 64 //将字符串转化为地址 65 OpNameAddressFrom = "AddressFrom" 66 OpNameAddressToString = "AddressToString" 67 OpNameU256From = "U256From" 68 OpNameU256ToString = "U256ToString" 69 70 OpNameAddKeyInfo = "AddKeyInfo" 71 OpNameWriteWithPointer = "WriteWithPointer" 72 OpNameReadWithPointer = "ReadWithPointer" 73 OpNameInitializeVariables = "InitializeVariables" 74 75 //uint256 76 OpNameU256FromU64 = "U256FromU64" 77 OpNameU256FromI64 = "U256FromI64" 78 OpNameU256Add = "U256_Add" 79 OpNameU256Sub = "U256_Sub" 80 OpNameU256Mul = "U256_Mul" 81 OpNameU256Div = "U256_Div" 82 OpNameU256Mod = "U256_Mod" 83 OpNameU256Pow = "U256_Pow" 84 OpNameU256Cmp = "U256_Cmp" 85 OpNameU256Shl = "U256_Shl" 86 OpNameU256Shr = "U256_Shr" 87 OpNameU256And = "U256_And" 88 OpNameU256Or = "U256_Or" 89 OpNameU256Xor = "U256_Xor" 90 91 //math 92 OpNamePow = "Pow" 93 94 //add gas 95 OpNameAddGas = "AddGas" 96 97 OpNameRevert = "Revert" 98 99 //qlang 100 OpNameSender = "Sender" 101 OpNameLoad = "Load" 102 OpNameStore = "Store" 103 ) 104 105 func (ef *EnvFunctions) getFuncTable() map[string]wasm.Function { 106 // 如果 vntlib.h里的参数变化,这里的方法签名也需要跟着变化,否则wasm validate不会通过 107 var func_table = map[string]wasm.Function{ 108 OpNameGetBalanceFromAddress: { 109 Host: reflect.ValueOf(ef.GetBalanceFromAddress), 110 Sig: &wasm.FunctionSig{ 111 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 112 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 113 }, 114 Body: &wasm.FunctionBody{ 115 Code: []byte{}, 116 }, 117 }, 118 OpNameGetGas: { 119 Host: reflect.ValueOf(ef.GetGas), 120 Sig: &wasm.FunctionSig{ 121 ParamTypes: []wasm.ValueType{}, 122 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI64}, 123 }, 124 Body: &wasm.FunctionBody{ 125 Code: []byte{}, 126 }, 127 }, 128 OpNameGetBlockHash: { 129 Host: reflect.ValueOf(ef.GetBlockHash), 130 Sig: &wasm.FunctionSig{ 131 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64}, 132 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 133 }, 134 Body: &wasm.FunctionBody{ 135 Code: []byte{}, 136 }, 137 }, 138 OpNameGetBlockProduser: { 139 Host: reflect.ValueOf(ef.GetBlockProduser), 140 Sig: &wasm.FunctionSig{ 141 ParamTypes: []wasm.ValueType{}, 142 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 143 }, 144 Body: &wasm.FunctionBody{ 145 Code: []byte{}, 146 }, 147 }, 148 OpNameGetTimestamp: { 149 Host: reflect.ValueOf(ef.GetTimestamp), 150 Sig: &wasm.FunctionSig{ 151 ParamTypes: []wasm.ValueType{}, 152 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI64}, 153 }, 154 Body: &wasm.FunctionBody{ 155 Code: []byte{}, 156 }, 157 }, 158 OpNameGetOrigin: { 159 Host: reflect.ValueOf(ef.GetOrigin), 160 Sig: &wasm.FunctionSig{ 161 ParamTypes: []wasm.ValueType{}, 162 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 163 }, 164 Body: &wasm.FunctionBody{ 165 Code: []byte{}, 166 }, 167 }, 168 OpNameGetSender: { 169 Host: reflect.ValueOf(ef.GetSender), 170 Sig: &wasm.FunctionSig{ 171 ParamTypes: []wasm.ValueType{}, 172 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 173 }, 174 Body: &wasm.FunctionBody{ 175 Code: []byte{}, 176 }, 177 }, 178 OpNameGetGasLimit: { 179 Host: reflect.ValueOf(ef.GetGasLimit), 180 Sig: &wasm.FunctionSig{ 181 ParamTypes: []wasm.ValueType{}, 182 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI64}, 183 }, 184 Body: &wasm.FunctionBody{ 185 Code: []byte{}, 186 }, 187 }, 188 OpNameGetValue: { 189 Host: reflect.ValueOf(ef.GetValue), 190 Sig: &wasm.FunctionSig{ 191 ParamTypes: []wasm.ValueType{}, 192 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 193 }, 194 Body: &wasm.FunctionBody{ 195 Code: []byte{}, 196 }, 197 }, 198 OpNameGetBlockNumber: { 199 Host: reflect.ValueOf(ef.GetBlockNumber), 200 Sig: &wasm.FunctionSig{ 201 ParamTypes: []wasm.ValueType{}, 202 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI64}, 203 }, 204 Body: &wasm.FunctionBody{ 205 Code: []byte{}, 206 }, 207 }, 208 OpNameSHA3: { 209 Host: reflect.ValueOf(ef.SHA3), 210 Sig: &wasm.FunctionSig{ 211 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 212 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 213 }, 214 Body: &wasm.FunctionBody{ 215 Code: []byte{}, 216 }, 217 }, 218 OpNameEcrecover: { 219 Host: reflect.ValueOf(ef.Ecrecover), 220 Sig: &wasm.FunctionSig{ 221 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32, wasm.ValueTypeI32, wasm.ValueTypeI32}, 222 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 223 }, 224 Body: &wasm.FunctionBody{ 225 Code: []byte{}, 226 }, 227 }, 228 OpNameGetContractAddress: { 229 Host: reflect.ValueOf(ef.GetContractAddress), 230 Sig: &wasm.FunctionSig{ 231 ParamTypes: []wasm.ValueType{}, 232 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 233 }, 234 Body: &wasm.FunctionBody{ 235 Code: []byte{}, 236 }, 237 }, 238 OpNameAssert: { 239 Host: reflect.ValueOf(ef.Assert), 240 Sig: &wasm.FunctionSig{ 241 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 242 ReturnTypes: []wasm.ValueType{}, 243 }, 244 Body: &wasm.FunctionBody{ 245 Code: []byte{}, 246 }, 247 }, 248 OpNameSendFromContract: { 249 Host: reflect.ValueOf(ef.SendFromContract), 250 Sig: &wasm.FunctionSig{ 251 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 252 ReturnTypes: []wasm.ValueType{}, 253 }, 254 Body: &wasm.FunctionBody{ 255 Code: []byte{}, 256 }, 257 }, 258 OpNameTransferFromContract: { 259 Host: reflect.ValueOf(ef.TransferFromContract), 260 Sig: &wasm.FunctionSig{ 261 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 262 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 263 }, 264 Body: &wasm.FunctionBody{ 265 Code: []byte{}, 266 }, 267 }, 268 OpNameEvent: { 269 Sig: &wasm.FunctionSig{ 270 ParamTypes: []wasm.ValueType{}, 271 ReturnTypes: []wasm.ValueType{}, 272 }, 273 Body: &wasm.FunctionBody{ 274 Code: []byte{}, 275 }, 276 }, 277 OpNamePrintAddress: { 278 Host: reflect.ValueOf(ef.PrintAddress), 279 Sig: &wasm.FunctionSig{ 280 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 281 ReturnTypes: []wasm.ValueType{}, 282 }, 283 Body: &wasm.FunctionBody{ 284 Code: []byte{}, 285 }, 286 }, 287 OpNamePrintStr: { 288 Host: reflect.ValueOf(ef.PrintStr), 289 Sig: &wasm.FunctionSig{ 290 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 291 ReturnTypes: []wasm.ValueType{}, 292 }, 293 Body: &wasm.FunctionBody{ 294 Code: []byte{}, 295 }, 296 }, 297 OpNamePrintQStr: { 298 Host: reflect.ValueOf(ef.PrintQStr), 299 Sig: &wasm.FunctionSig{ 300 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 301 ReturnTypes: []wasm.ValueType{}, 302 }, 303 Body: &wasm.FunctionBody{ 304 Code: []byte{}, 305 }, 306 }, 307 OpNamePrintUint64T: { 308 Host: reflect.ValueOf(ef.PrintUint64T), 309 Sig: &wasm.FunctionSig{ 310 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI64}, 311 ReturnTypes: []wasm.ValueType{}, 312 }, 313 Body: &wasm.FunctionBody{ 314 Code: []byte{}, 315 }, 316 }, 317 OpNamePrintUint32T: { 318 Host: reflect.ValueOf(ef.PrintUint32T), 319 Sig: &wasm.FunctionSig{ 320 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 321 ReturnTypes: []wasm.ValueType{}, 322 }, 323 Body: &wasm.FunctionBody{ 324 Code: []byte{}, 325 }, 326 }, 327 OpNamePrintInt64T: { 328 Host: reflect.ValueOf(ef.PrintInt64T), 329 Sig: &wasm.FunctionSig{ 330 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI64}, 331 ReturnTypes: []wasm.ValueType{}, 332 }, 333 Body: &wasm.FunctionBody{ 334 Code: []byte{}, 335 }, 336 }, 337 OpNamePrintInt32T: { 338 Host: reflect.ValueOf(ef.PrintInt32T), 339 Sig: &wasm.FunctionSig{ 340 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 341 ReturnTypes: []wasm.ValueType{}, 342 }, 343 Body: &wasm.FunctionBody{ 344 Code: []byte{}, 345 }, 346 }, 347 OpNamePrintUint256T: { 348 Host: reflect.ValueOf(ef.PrintUint256T), 349 Sig: &wasm.FunctionSig{ 350 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 351 ReturnTypes: []wasm.ValueType{}, 352 }, 353 Body: &wasm.FunctionBody{ 354 Code: []byte{}, 355 }, 356 }, 357 OpNameFromI64: { 358 Host: reflect.ValueOf(ef.fromI64), 359 Sig: &wasm.FunctionSig{ 360 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64}, 361 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 362 }, 363 Body: &wasm.FunctionBody{ 364 Code: []byte{}, 365 }, 366 }, 367 OpNameFromU64: { 368 Host: reflect.ValueOf(ef.fromU64), 369 Sig: &wasm.FunctionSig{ 370 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64}, 371 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 372 }, 373 Body: &wasm.FunctionBody{ 374 Code: []byte{}, 375 }, 376 }, 377 OpNameToI64: { 378 Host: reflect.ValueOf(ef.toI64), 379 Sig: &wasm.FunctionSig{ 380 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 381 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI64}, 382 }, 383 Body: &wasm.FunctionBody{ 384 Code: []byte{}, 385 }, 386 }, 387 OpNameToU64: { 388 Host: reflect.ValueOf(ef.toU64), 389 Sig: &wasm.FunctionSig{ 390 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 391 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI64}, 392 }, 393 Body: &wasm.FunctionBody{ 394 Code: []byte{}, 395 }, 396 }, 397 OpNameConcat: { 398 Host: reflect.ValueOf(ef.Concat), 399 Sig: &wasm.FunctionSig{ 400 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 401 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 402 }, 403 Body: &wasm.FunctionBody{ 404 Code: []byte{}, 405 }, 406 }, 407 OpNameEqual: { 408 Host: reflect.ValueOf(ef.Equal), 409 Sig: &wasm.FunctionSig{ 410 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 411 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 412 }, 413 Body: &wasm.FunctionBody{ 414 Code: []byte{}, 415 }, 416 }, 417 OpNameContractCall: { 418 Sig: &wasm.FunctionSig{ 419 ParamTypes: []wasm.ValueType{}, 420 ReturnTypes: []wasm.ValueType{}, 421 }, 422 Body: &wasm.FunctionBody{ 423 Code: []byte{}, 424 }, 425 }, 426 OpNameAddressFrom: { 427 Host: reflect.ValueOf(ef.AddressFrom), 428 Sig: &wasm.FunctionSig{ 429 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 430 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 431 }, 432 Body: &wasm.FunctionBody{ 433 Code: []byte{}, 434 }, 435 }, 436 OpNameAddressToString: { 437 Host: reflect.ValueOf(ef.AddressToString), 438 Sig: &wasm.FunctionSig{ 439 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 440 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 441 }, 442 Body: &wasm.FunctionBody{ 443 Code: []byte{}, 444 }, 445 }, 446 OpNameU256From: { 447 Host: reflect.ValueOf(ef.U256From), 448 Sig: &wasm.FunctionSig{ 449 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 450 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 451 }, 452 Body: &wasm.FunctionBody{ 453 Code: []byte{}, 454 }, 455 }, 456 OpNameU256ToString: { 457 Host: reflect.ValueOf(ef.U256ToString), 458 Sig: &wasm.FunctionSig{ 459 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 460 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 461 }, 462 Body: &wasm.FunctionBody{ 463 Code: []byte{}, 464 }, 465 }, 466 OpNameU256FromU64: { 467 Host: reflect.ValueOf(ef.U256FromU64), 468 Sig: &wasm.FunctionSig{ 469 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64}, 470 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 471 }, 472 Body: &wasm.FunctionBody{ 473 Code: []byte{}, 474 }, 475 }, 476 OpNameU256FromI64: { 477 Host: reflect.ValueOf(ef.U256FromI64), 478 Sig: &wasm.FunctionSig{ 479 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64}, 480 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 481 }, 482 Body: &wasm.FunctionBody{ 483 Code: []byte{}, 484 }, 485 }, 486 OpNameAddKeyInfo: { 487 Host: reflect.ValueOf(ef.AddKeyInfo), 488 Sig: &wasm.FunctionSig{ 489 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64, wasm.ValueTypeI32, wasm.ValueTypeI64, wasm.ValueTypeI32, wasm.ValueTypeI32}, 490 ReturnTypes: []wasm.ValueType{}, 491 }, 492 Body: &wasm.FunctionBody{ 493 Code: []byte{}, 494 }, 495 }, 496 OpNameWriteWithPointer: { 497 Host: reflect.ValueOf(ef.WriteWithPointer), 498 Sig: &wasm.FunctionSig{ 499 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64, wasm.ValueTypeI64}, 500 ReturnTypes: []wasm.ValueType{}, 501 }, 502 Body: &wasm.FunctionBody{ 503 Code: []byte{}, 504 }, 505 }, 506 OpNameReadWithPointer: { 507 Host: reflect.ValueOf(ef.ReadWithPointer), 508 Sig: &wasm.FunctionSig{ 509 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64, wasm.ValueTypeI64}, 510 ReturnTypes: []wasm.ValueType{}, 511 }, 512 Body: &wasm.FunctionBody{ 513 Code: []byte{}, 514 }, 515 }, 516 OpNameInitializeVariables: { 517 Host: reflect.ValueOf(ef.InitializeVariables), 518 Sig: &wasm.FunctionSig{ 519 ParamTypes: []wasm.ValueType{}, 520 ReturnTypes: []wasm.ValueType{}, 521 }, 522 Body: &wasm.FunctionBody{ 523 Code: []byte{}, 524 }, 525 }, 526 OpNameU256Add: { 527 Host: reflect.ValueOf(ef.U256Add), 528 Sig: &wasm.FunctionSig{ 529 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 530 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 531 }, 532 Body: &wasm.FunctionBody{ 533 Code: []byte{}, 534 }, 535 }, 536 OpNameU256Sub: { 537 Host: reflect.ValueOf(ef.U256Sub), 538 Sig: &wasm.FunctionSig{ 539 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 540 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 541 }, 542 Body: &wasm.FunctionBody{ 543 Code: []byte{}, 544 }, 545 }, 546 OpNameU256Mul: { 547 Host: reflect.ValueOf(ef.U256Mul), 548 Sig: &wasm.FunctionSig{ 549 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 550 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 551 }, 552 Body: &wasm.FunctionBody{ 553 Code: []byte{}, 554 }, 555 }, 556 OpNameU256Div: { 557 Host: reflect.ValueOf(ef.U256Div), 558 Sig: &wasm.FunctionSig{ 559 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 560 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 561 }, 562 Body: &wasm.FunctionBody{ 563 Code: []byte{}, 564 }, 565 }, 566 OpNameU256Mod: { 567 Host: reflect.ValueOf(ef.U256Mod), 568 Sig: &wasm.FunctionSig{ 569 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 570 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 571 }, 572 Body: &wasm.FunctionBody{ 573 Code: []byte{}, 574 }, 575 }, 576 OpNameU256Pow: { 577 Host: reflect.ValueOf(ef.U256Pow), 578 Sig: &wasm.FunctionSig{ 579 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 580 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 581 }, 582 Body: &wasm.FunctionBody{ 583 Code: []byte{}, 584 }, 585 }, 586 OpNameU256Cmp: { 587 Host: reflect.ValueOf(ef.U256Cmp), 588 Sig: &wasm.FunctionSig{ 589 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 590 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 591 }, 592 Body: &wasm.FunctionBody{ 593 Code: []byte{}, 594 }, 595 }, 596 OpNameU256Shl: { 597 Host: reflect.ValueOf(ef.U256Shl), 598 Sig: &wasm.FunctionSig{ 599 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 600 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 601 }, 602 Body: &wasm.FunctionBody{ 603 Code: []byte{}, 604 }, 605 }, 606 OpNameU256Shr: { 607 Host: reflect.ValueOf(ef.U256Shr), 608 Sig: &wasm.FunctionSig{ 609 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 610 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 611 }, 612 Body: &wasm.FunctionBody{ 613 Code: []byte{}, 614 }, 615 }, 616 OpNameU256And: { 617 Host: reflect.ValueOf(ef.U256And), 618 Sig: &wasm.FunctionSig{ 619 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 620 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 621 }, 622 Body: &wasm.FunctionBody{ 623 Code: []byte{}, 624 }, 625 }, 626 OpNameU256Xor: { 627 Host: reflect.ValueOf(ef.U256Xor), 628 Sig: &wasm.FunctionSig{ 629 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 630 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 631 }, 632 Body: &wasm.FunctionBody{ 633 Code: []byte{}, 634 }, 635 }, 636 OpNameU256Or: { 637 Host: reflect.ValueOf(ef.U256Or), 638 Sig: &wasm.FunctionSig{ 639 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 640 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 641 }, 642 Body: &wasm.FunctionBody{ 643 Code: []byte{}, 644 }, 645 }, 646 OpNamePow: { 647 Host: reflect.ValueOf(ef.Pow), 648 Sig: &wasm.FunctionSig{ 649 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64, wasm.ValueTypeI64}, 650 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI64}, 651 }, 652 Body: &wasm.FunctionBody{ 653 Code: []byte{}, 654 }, 655 }, 656 OpNameAddGas: { 657 Host: reflect.ValueOf(ef.AddGas), 658 Sig: &wasm.FunctionSig{ 659 ParamTypes: []wasm.ValueType{wasm.ValueTypeI64}, 660 ReturnTypes: []wasm.ValueType{}, 661 }, 662 Body: &wasm.FunctionBody{ 663 Code: []byte{}, 664 }, 665 }, 666 OpNameRevert: { 667 Host: reflect.ValueOf(ef.Revert), 668 Sig: &wasm.FunctionSig{ 669 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 670 ReturnTypes: []wasm.ValueType{}, 671 }, 672 Body: &wasm.FunctionBody{ 673 Code: []byte{}, 674 }, 675 }, 676 OpNameSender: { 677 Host: reflect.ValueOf(ef.Sender), 678 Sig: &wasm.FunctionSig{ 679 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32}, 680 ReturnTypes: []wasm.ValueType{}, 681 }, 682 Body: &wasm.FunctionBody{ 683 Code: []byte{}, 684 }, 685 }, 686 OpNameLoad: { 687 Host: reflect.ValueOf(ef.Load), 688 Sig: &wasm.FunctionSig{ 689 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 690 ReturnTypes: []wasm.ValueType{wasm.ValueTypeI32}, 691 }, 692 Body: &wasm.FunctionBody{ 693 Code: []byte{}, 694 }, 695 }, 696 OpNameStore: { 697 Host: reflect.ValueOf(ef.Store), 698 Sig: &wasm.FunctionSig{ 699 ParamTypes: []wasm.ValueType{wasm.ValueTypeI32, wasm.ValueTypeI32}, 700 ReturnTypes: []wasm.ValueType{}, 701 }, 702 Body: &wasm.FunctionBody{ 703 Code: []byte{}, 704 }, 705 }, 706 } 707 return func_table 708 } 709 710 // 711 //func ResolveHostFunc() map[FieldName]*Function { 712 // for k, v := range resolveHostFunc { 713 // v.IsHost = true 714 // v.FieldName = k 715 // resolveHostFunc[k] = v 716 // } 717 // return resolveHostFunc 718 //}