-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
frog should strip out calls to toDouble #773
Comments
You can only do what you suggest if you prove: I consider (1) to be part language issue. Having nullable and non-nullable types would help with the 'proof'. (2) depends a lot on whether we can continue to use JS numbers for all values of type int. The generated code is quite odious since it causes the boxing of the JS number, only to forcefully unbox it. Both the boxing and unboxing (via this + 0) cause V8 to generate slow-path code. That could be ameliorated by generating a special dispatch. |
V8 doesn't need to box the number if "use strict" is used. |
This comment was originally written by drfibonacci@google.com Added Triaged label. |
This comment was originally written by mattsh@google.com I think the null handling is probably a separate issue. (In this example it would be fine if 'n' is assigned null if 'x' was null.) |
as Stephen said, we need to call a method so we get a null check, or else insert the null check some other way. |
Also, I think there's a readability argument to be made for keeping the JS code similar to the Dart code. Unless this is motivated by performance, I don't see the argument for changing it, other than switching to "use strict" as Florian suggested. Removed Priority-Medium label. |
Revisions updated by `dart tools/rev_sdk_deps.dart`. ffi (https://github.com/dart-lang/ffi/compare/3ede231..17a8142): 17a8142 2022-11-21 Daco Harkes Add links to API reference and examples to README (#167) fixnum (https://github.com/dart-lang/fixnum/compare/bca3816..62916f2): 62916f2 2022-11-24 Lasse R.H. Nielsen Split into separate libraries instead of using parts. (#97) 14d4827 2022-11-23 Lasse R.H. Nielsen Add `tryParse` methods. (#96) http (https://github.com/dart-lang/http/compare/d56141d..047d6ed): 047d6ed 2022-11-22 Brian Quinlan Fixes a bug where requests made in different Clients would fail (#827) 9dbbafb 2022-11-17 Brian Quinlan Add tests for compressed responses (#823) markdown (https://github.com/dart-lang/markdown/compare/37951d1..ee3f4e9): ee3f4e9 2022-11-24 Zhiguang Chen Fix a blockquote issue (#496) c9048c0 2022-11-16 Zhiguang Chen Optimise DelimiterSyntax (#492) protobuf (https://github.com/dart-lang/protobuf/compare/ae90e53..c181573): c181573 2022-11-23 Kevin Moore [api_benchmark] migrate to null-safety (#776) 648deaf 2022-11-23 Kevin Moore Standardize and fix lints (#775) bfa4c0d 2022-11-23 Kevin Moore Fix `///` at the top of generated Dart files (#774) ed68426 2022-11-17 Devon Carew Remove duplicate consts (#773) sse (https://github.com/dart-lang/sse/compare/283568d..8d018dd): 8d018dd 2022-11-23 Elliott Brooks (she/her) Format markdown files (#68) 2f6f151 2022-11-23 Elliott Brooks (she/her) Add optional `debugKey` parameter to SSE client (#67) eaee6a8 2022-11-23 Elliott Brooks (she/her) Use Fetch API in SSE Client (#66) test (https://github.com/dart-lang/test/compare/7756833..b25dac9): b25dac99 2022-11-21 Kevin Moore checks: finish async tests (#1793) 3166163e 2022-11-18 Devon Carew Update scorecards-analysis.yml (#1792) d930d5b0 2022-11-18 Nate Bosch Add support for async soft checks (#1789) b1411a21 2022-11-18 Devon Carew blast_repo fixes (#1788) a6aa04e0 2022-11-18 Jacob MacDonald disable wasm tests for now as they are failing (#1791) 8b5174c1 2022-11-17 Kevin Moore Starting on async tests (#1787) Change-Id: Ic361fce7753d08d43fc827f13cb1bfa1738cc16e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/272343 Auto-Submit: Devon Carew <devoncarew@google.com> Reviewed-by: Kevin Moore <kevmoo@google.com> Commit-Queue: Devon Carew <devoncarew@google.com>
This issue was originally filed by mattsh@google.com
In a program like this:
int x = 23;
double n = x.toDouble();
frog inserts an actual call to a function called toDouble (which is a no-op) in the generated code. It seems like this should get stripped out. (Or, another solution would be to not require the programmer to put it there in the first place, but I think that would be a language change.)
I'm not sure whether to regard this as a language issue or a frog issue, but somehow I think we need to this assignment without involving a real function call in the generated js.
The text was updated successfully, but these errors were encountered: