Making a WebAssembly interpreter in Ruby, part 29: runtime module representation

preview_player
Показать описание
00:00:00 — Move #find_function and #function_at into Module
00:36:27 — Move #find_global into Module
00:39:55 — Don’t set current module when calling #find_global
01:07:52 — Remove unnecessary Module#function_at
01:12:59 — Add `exports_hash` to Module and populate during instantiation
01:49:22 — Use `exports_hash` lookup in #find_function
02:08:32 — Remove unnecessary Module#find_function
02:14:08 — Introduce runtime representation of global variables
02:22:19 — Include globals in precomputed exports hash
02:32:16 — Use `exports_hash` lookup in #find_global
02:34:04 — Remove unnecessary `nil` hash fetch default in #find_global
02:36:28 — Remove unnecessary Module#find_global
02:40:06 — Remove unused `exports` AST node from runtime Module
02:45:11 — Rename #build_exports_hash to #build_exports
02:45:33 — Rename `exports_hash` local variable to `result`
02:46:31 — Add `spectest` module instance to initial modules
03:21:50 — Import existing globals where necessary instead of always creating new ones
03:22:49 — Extract #build_globals helper
03:24:46 — Add `print_i32` implementation to `spectest` module instance
03:46:41 — Resolve top-level function imports during module instantiation
03:49:37 — Resolve inline function imports during module instantiation
03:56:45 — Extract #build_functions helper
04:02:54 — Extract #build_memory helper
04:07:16 — Use #parse_string everywhere we parse strings, to remove extraneous double quotes
04:22:23 — Extract #initialise_globals helper
04:34:41 — Wrapping up
Рекомендации по теме
visit shbcf.ru