Как отключить оптимизирующий компилятор V8
Я пишу функцию сравнения строк в постоянном времени (для node.js) и хотел бы отключить оптимизирующий компилятор V8 для этой единственной функции; использование флагов командной строки исключено.
Я знаю, что с помощьюwith{}
(или try / catch) блок отключит оптимизирующий компиляторв настоящее время, но я боюсь, что эта "особенность" (ошибка) будет исправлена в будущих версиях.
Есть ли неизменный (и задокументированный) способ отключения оптимизирующего компилятора V8?
Пример функции:
function constantTimeStringCompare( a, b ) {
// By adding a `with` block here, we disable v8's optimizing compiler.
// Using Object.create(null) ensures we don't have any object prototype properties getting in our way.our way.
with ( Object.create( null ) ){
var valid = true,
length = Math.max( a.length, b.length );
while ( length-- ) {
valid &= a.charCodeAt( length ) === b.charCodeAt( length );
}
// returns true if valid == 1, false if valid == 0
return !!valid;
}
}
Итест на прохождение просто для удовольствия.