Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upEliminate a mem::transmute in CodeGen #15659
Merged
Conversation
highfive
commented
Feb 20, 2017
|
Thanks for the pull request, and welcome! The Servo team is excited to review your changes, and you should hear from @mbrubeck (or someone else) soon. |
highfive
commented
Feb 20, 2017
highfive
commented
Feb 20, 2017
| """ % (",\n ".join(['"%s"' % val for val in enum.values()]), enum.identifier.name, enum.identifier.name) | ||
|
|
||
| """ % (ident, | ||
| ",\n ".join(['("%s", super::%s::%s)' % (val, ident, getEnumValueName(val)) for val in enum.values()]), |
This comment has been minimized.
This comment has been minimized.
| pub unsafe fn find_enum_value<T: Copy>(cx: *mut JSContext, | ||
| v: HandleValue, | ||
| pairs: &[(&'static str, T)]) | ||
| -> Result<(Option<T>, DOMString), ()> { |
This comment has been minimized.
This comment has been minimized.
Ms2ger
Feb 20, 2017
Contributor
I think we can avoid the Copy bound by doing
pairs: &'a [(&'static str, T)])
-> Result<(Option<&'a T>, DOMString), ()> {and then in the generated code
Ok((Some(&value), _)) => value,
This comment has been minimized.
This comment has been minimized.
| /// Returns `Err(())` on JSAPI failure (there is a pending exception), and | ||
| /// `Ok((None, value))` if there was no matching string. | ||
| pub unsafe fn find_enum_string_index(cx: *mut JSContext, | ||
| pub unsafe fn find_enum_value<'a, T>(cx: *mut JSContext, |
This comment has been minimized.
This comment has been minimized.
nox
Feb 21, 2017
Member
I don't think you need the explicit 'a here, lifetime elision should do the job.
|
I think it's fine. @bors-servo r+ |
|
|
bors-servo
added a commit
that referenced
this pull request
Feb 21, 2017
Eliminate a mem::transmute in CodeGen <!-- Please describe your changes on the following line: --> Eliminate a mem::transmute in CodeGen by changing the find_enum_string_index function to take a slice of pairs and return an enum value. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #15587 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [X] These changes do not require tests because _____ <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/15659) <!-- Reviewable:end -->
|
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
gregkatz commentedFeb 20, 2017
•
edited by larsbergstrom
Eliminate a mem::transmute in CodeGen by changing the find_enum_string_index function to take a slice of pairs and return an enum value.
./mach build -ddoes not report any errors./mach test-tidydoes not report any errorsThis change is