entry_wasm.odin 904 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #+private
  2. #+build wasm32, wasm64p32
  3. #+no-instrumentation
  4. package runtime
  5. import "base:intrinsics"
  6. when !ODIN_TEST && !ODIN_NO_ENTRY_POINT {
  7. when ODIN_OS == .Orca {
  8. @(linkage="strong", require, export)
  9. oc_on_init :: proc "c" () {
  10. context = default_context()
  11. #force_no_inline _startup_runtime()
  12. intrinsics.__entry_point()
  13. }
  14. @(linkage="strong", require, export)
  15. oc_on_terminate :: proc "c" () {
  16. context = default_context()
  17. #force_no_inline _cleanup_runtime()
  18. }
  19. } else {
  20. @(link_name="_start", linkage="strong", require, export)
  21. _start :: proc "c" () {
  22. context = default_context()
  23. when ODIN_OS == .WASI {
  24. _wasi_setup_args()
  25. }
  26. #force_no_inline _startup_runtime()
  27. intrinsics.__entry_point()
  28. }
  29. @(link_name="_end", linkage="strong", require, export)
  30. _end :: proc "c" () {
  31. context = default_context()
  32. #force_no_inline _cleanup_runtime()
  33. }
  34. }
  35. }