Difference between fullcode and ignition_staging_turbo_opt: isOneByteString |
||||||||
Issue descriptionRequires --expose-externalize-string. Maybe connected to issue 662406. # Minimized program: print(isOneByteString("123456789" + "qwertyuiopasdfghjklzxcvbnm")); # Compared fullcode with ignition_turbo_opt # Flags of fullcode: --abort_on_stack_overflow --expose-gc --allow-natives-syntax --invoke-weak-callbacks --omit-quit --expose-externalize-string --random-seed 1635110516 --nocrankshaft --turbo-filter=~ # Flags of ignition_turbo_opt: --abort_on_stack_overflow --expose-gc --allow-natives-syntax --invoke-weak-callbacks --omit-quit --expose-externalize-string --random-seed 1635110516 --ignition-staging --turbo --always-opt Difference: - true + false ### Start of configuration fullcode: true ### End of configuration fullcode ### Start of configuration ignition_turbo_opt: false ### End of configuration ignition_turbo_opt
,
Nov 10 2016
This also only occurs when --turbo and --always-opt are passed, so looks like a turbofan ends up creating something which is not a isOneByteString .
,
Nov 11 2016
I noticed that string add is optimized differently in turbofan and crankshaft. Crankshaft inlines few of the cases without calling to the StringAdd stub. I will take a look at this.
,
Nov 11 2016
This is my TODO in JSTypedLowering, where we always use the cons_string_map, w/o checking whether we could produce a one-byte string instead. This is not a correctness issue tho.
,
Dec 13 2016
,
Apr 27 2017
Did this get fixed in the mean time? The original report doesn't repro anymore with ToT and this is one of the legacy cases from the fuzzer evaluation phase. If it's supposed to still repro, do you have an actual one?
,
Apr 28 2017
TurboFan probably constant-folds the string addition by now. So using non constant one byte string on one side should still repro.
,
Apr 28 2017
Indeed, still repros. Still requires --expose-externalize-string.
function f(a) {
print(isOneByteString(a + "qwertyuiopasdfghjklzxcvbnm"))
}
f("12345");
f("12345");
%OptimizeFunctionOnNextCall(f)
f("12345");
// Output:
# Compared x64,ignition with x64,ignition_turbo
#
# Flags of x64,ignition:
--abort_on_stack_overflow --expose-gc --allow-natives-syntax --invoke-weak-callbacks --omit-quit --es-staging --expose-externalize-string --random-seed 732681078 --ignition --turbo-filter=~ --hydrogen-filter=~ --nocrankshaft
# Flags of x64,ignition_turbo:
--abort_on_stack_overflow --expose-gc --allow-natives-syntax --invoke-weak-callbacks --omit-quit --es-staging --expose-externalize-string --random-seed 732681078 --ignition --turbo
#
# Difference:
- true
+ false
#
# Source file:
none
#
### Start of configuration x64,ignition:
true
true
true
### End of configuration x64,ignition
#
### Start of configuration x64,ignition_turbo:
true
true
false
### End of configuration x64,ignition_turbo
,
Apr 28 2017
,
Dec 11 2017
This was fixed recently with https://chromium-review.googlesource.com/799700 |
||||||||
►
Sign in to add a comment |
||||||||
Comment 1 by machenb...@chromium.org
, Nov 8 2016