Skip to content
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

Allow using get_remaining_points/set_remaining_points without the Metering instance #1941

Merged
merged 6 commits into from
Dec 20, 2020

Conversation

webmaster128
Copy link
Contributor

Description

In order to be able to use get_remaining_points/set_remaining_points in an ahead of time compilation scenario, those should be acessible withouht the compile time tooling. It turns out this is easy since &self is never used anyways.

In this PR I turn them into free function. I tried static functions first (i.e. calls like Metering::get_remaining_points(&instance)), but this brings users in big trouble with respect to generic arguments of struct Metering<F: Fn(&Operator) -> u64 + Copy + Clone + Send + Sync>. We could use a different struct for namespacing purposes (e.g. MeteringManager::get_remaining_points(&instance)), but this feels like Java style.

Review

  • Add a short description of the the change to the CHANGELOG.md file

@webmaster128 webmaster128 force-pushed the metering-manager branch 2 times, most recently from dd500ed to ff4a2f3 Compare December 16, 2020 11:43
examples/metering.rs Outdated Show resolved Hide resolved
@syrusakbary
Copy link
Member

bors r+

@bors
Copy link
Contributor

bors bot commented Dec 20, 2020

@bors bors bot merged commit 6f06fc2 into wasmerio:master Dec 20, 2020
bors bot added a commit that referenced this pull request Dec 23, 2020
1951: feat: Add an error code on the metering middleware r=MarkMcCaskey a=jubianchi

_This is a proposition for #1931._

~~**⚠️ Do not merge as-is. Wait for #1941 to get merged or to provide an alternative**~~

Basically, the metering middleware now injects a new global, `error_code` with its own helper `get_error_code` which will allow the host to correctly handle metering errors. Now, a `remaining_points == 0` and `error_code != NoError` means the execution of the guest module consumed all the gas points.

# Review

- [ ] Add a short description of the the change to the CHANGELOG.md file


Co-authored-by: jubianchi <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants