История изменений
Исправление mydibyje, (текущая версия) :
На ноде кстати, понятно как смотреть байткод, кстати он у обеих функций одинаков, значит дело в маш.коде и скорее всего оптимизированном, а вот в браузере непонятно что делать с флагом --js-flags="--print-bytecode"
, ведь интересен браузер в первую очередь.
//script.js
const a = 'Android';
function aA(a){
return a === 'android' || a === 'Android';
}
function Aa(a){
return a === 'Android' || a === 'android';
}
aA(a);
Aa(a);
$ node --print-bytecode --print-bytecode-filter=aA script.js
41 S> 00000296735446F6 @ 0 : 13 00 LdaConstant [0]
50 E> 00000296735446F8 @ 2 : 6c 03 00 TestEqualStrict a0, [0]
00000296735446FB @ 5 : 98 07 JumpIfTrue [7] (0000029673544702 @ 12)
00000296735446FD @ 7 : 13 01 LdaConstant [1]
69 E> 00000296735446FF @ 9 : 6c 03 01 TestEqualStrict a0, [1]
83 S> 0000029673544702 @ 12 : a9 Return
А вот как смотреть оптимизированный маш.код не разобрался, флаг --print-opt-code
(все флаги смотреть через node --v8-options
) есть, но не выводит ничего. Приходится пользоваться --print-code
, который выводит портянку на 3500 строк.
Исправление mydibyje, :
На ноде кстати, понятно как смотреть байткод, кстати он у обеих функций одинаков, значит дело в маш.коде и скорее всего оптимизированном, а вот в браузере непонятно что делать с флагом --js-flags="--print-bytecode"
, ведь интересен браузер в первую очередь.
//script.js
const a = 'Android';
function aA(a){
return a === 'android' || a === 'Android';
}
function Aa(a){
return a === 'Android' || a === 'android';
}
aA(a);
Aa(a);
$ node --print-bytecode --print-bytecode-filter=aA script.js
41 S> 00000296735446F6 @ 0 : 13 00 LdaConstant [0]
50 E> 00000296735446F8 @ 2 : 6c 03 00 TestEqualStrict a0, [0]
00000296735446FB @ 5 : 98 07 JumpIfTrue [7] (0000029673544702 @ 12)
00000296735446FD @ 7 : 13 01 LdaConstant [1]
69 E> 00000296735446FF @ 9 : 6c 03 01 TestEqualStrict a0, [1]
83 S> 0000029673544702 @ 12 : a9 Return
А вот как смотреть оптимизированный маш.код не разобрался, флаг --print-opt-code
есть, но не выводит ничего. Приходится пользоваться --print-code
, который выводит портянку на 3500 строк.
Исходная версия mydibyje, :
На ноде кстати, понятно как смотреть байткод, кстати он у обеих функций одинаков, значит дело в маш.коде и скорее всего оптимизированном, а вот в браузере непонятно что делать с флагом --js-flags="--print-bytecode"
, ведь интересен браузер в первую очередь.
//script.js
const a = 'Android';
function aA(a){
return a === 'android' || a === 'Android';
}
function Aa(a){
return a === 'Android' || a === 'android';
}
aA(a);
Aa(a);
$ node --print-bytecode --print-bytecode-filter=aA script.js
41 S> 00000296735446F6 @ 0 : 13 00 LdaConstant [0]
50 E> 00000296735446F8 @ 2 : 6c 03 00 TestEqualStrict a0, [0]
00000296735446FB @ 5 : 98 07 JumpIfTrue [7] (0000029673544702 @ 12)
00000296735446FD @ 7 : 13 01 LdaConstant [1]
69 E> 00000296735446FF @ 9 : 6c 03 01 TestEqualStrict a0, [1]
83 S> 0000029673544702 @ 12 : a9 Return
А вот как смотреть оптимизированный маш.код не разобрался, флаг --print-opt-code
есть, но не выводит ничего. Приходится пользоваться --print-code
, который выводит портянку на 3000 строк.