LINUX.ORG.RU

История изменений

Исправление 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 строк.