-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Flesh out emscripten metadata #8519
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -518,7 +518,7 @@ def get_emscripten_version(path): | |
# For the Emscripten-specific WASM metadata section, follows semver, changes | ||
# whenever metadata section changes structure | ||
# NB: major version 0 implies no compatibility | ||
(EMSCRIPTEN_METADATA_MAJOR, EMSCRIPTEN_METADATA_MINOR) = (0, 0) | ||
(EMSCRIPTEN_METADATA_MAJOR, EMSCRIPTEN_METADATA_MINOR) = (0, 1) | ||
# For the JS/WASM ABI, specifies the minimum ABI version required of | ||
# the WASM runtime implementation by the generated WASM binary. It follows | ||
# semver and changes whenever C types change size/signedness or | ||
|
@@ -2979,8 +2979,20 @@ def delebify(buf, offset): | |
|
||
@staticmethod | ||
def add_emscripten_metadata(js_file, wasm_file): | ||
mem_size = Settings.STATIC_BUMP | ||
WASM_PAGE_SIZE = 65536 | ||
|
||
mem_size = Settings.TOTAL_MEMORY // WASM_PAGE_SIZE | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Doesn't There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, the intent is to make sure mem_size is an integer. I could have done |
||
table_size = Settings.WASM_TABLE_SIZE | ||
global_base = Settings.GLOBAL_BASE | ||
|
||
js = open(js_file).read() | ||
m = re.search(r"(^|\s)tempDoublePtr\s+=\s+(\d+)", js) | ||
tempdouble_ptr = int(m.group(2)) | ||
m = re.search(r"(^|\s)DYNAMIC_BASE\s+=\s+(\d+)", js) | ||
dynamic_base = int(m.group(2)) | ||
m = re.search(r"(^|\s)DYNAMICTOP_PTR\s+=\s+(\d+)", js) | ||
dynamictop_ptr = int(m.group(2)) | ||
|
||
logger.debug('creating wasm emscripten metadata section with mem size %d, table size %d' % (mem_size, table_size,)) | ||
name = b'\x13emscripten_metadata' # section name, including prefixed size | ||
contents = ( | ||
|
@@ -2994,11 +3006,13 @@ def add_emscripten_metadata(js_file, wasm_file): | |
WebAssembly.lebify(EMSCRIPTEN_ABI_MAJOR) + | ||
WebAssembly.lebify(EMSCRIPTEN_ABI_MINOR) + | ||
|
||
# static bump | ||
WebAssembly.lebify(mem_size) + | ||
WebAssembly.lebify(table_size) + | ||
WebAssembly.lebify(global_base) + | ||
WebAssembly.lebify(dynamic_base) + | ||
WebAssembly.lebify(dynamictop_ptr) + | ||
WebAssembly.lebify(tempdouble_ptr) | ||
|
||
# table size | ||
WebAssembly.lebify(table_size) | ||
# NB: more data can be appended here as long as you increase | ||
# the EMSCRIPTEN_METADATA_MINOR | ||
) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so STATIC_BUMP is no longer needed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
STATIC_BUMP was being used to compute
DYNAMICTOP_PTR
andtempDoublePtr
but since those are now not derived fromSTATIC_BUMP
it's no longer necessary to store that.