Документация по функциям и синтаксис — ECMA262

Помогите мне, где я могу найти документацию для функции TO_NUMBER и что означает % (знак процента) при размещении перед MathExpRT (что также не может найти никаких документов об этом)

https://github.com/v8/v8/blob/b0e4dce6091a8777bda80d962df76525dc6c5ea9/src/js/math.js#L62-L64


person Mark Spencer    schedule 16.10.2016    source источник


Ответы (2)


TO_NUMBER — это внутренний макрос V8, определенный здесь:

https://github.com/v8/v8/blob/ac886b0c1c173d6ceff762952e1d6cf78e8bd172/src/js/macros.py#L96

Не то чтобы это сильно вам помогло: он просто вызывает встроенную функцию, которая реализована в виде сгенерированного кода и имеет множество различных реализаций в зависимости от компилятора (в V8 их четыре), аппаратной платформы (в V8 поддерживается около 10) и доступной информации о типах. Один общий генератор кода можно увидеть здесь:

https://github.com/v8/v8/blob/5acc31d86329794407f2764a369c2f638305b376/src/code-stub-assembler.cc#L3259

Если вы просто хотите знать семантику, вам лучше взглянуть на стандарт ECMAScript 262.

person Andreas Rossberg    schedule 16.10.2016
comment
большое спасибо, но ааа, этот код кажется таким намеренно запутанным... - person Mark Spencer; 16.10.2016
comment
@MarkSpencer, это генератор кода - для этого он на самом деле довольно читаем. ;) - person Andreas Rossberg; 17.10.2016
comment
что вы подразумеваете под генератором кода? как Babel (который для js)? - person Mark Spencer; 17.10.2016
comment
@MarkSpencer, генератор кода, создающий машинный код. - person Andreas Rossberg; 17.10.2016
comment
Это не компилятор? - person Mark Spencer; 19.10.2016
comment
Генерация кода является частью серверной части компилятора, обычно это машинный код. То, что делают такие инструменты, как Babel, более точно называется генерацией программ. - person Andreas Rossberg; 20.10.2016

% в этом контексте является специфичным для V8 синтаксисом для обозначения вызова метода C++, см. здесь и здесь (это не JavaScript %, который является оператором по модулю).

MathExpRT, насколько я понимаю из других ответов, - это имя метода С++ (во время выполнения V8), который будет вызываться из связанного с вами JS-файла.

person jakub.g    schedule 16.10.2016
comment
И TO_NUMBER? Как я могу увидеть исходный код? - person Mark Spencer; 16.10.2016
comment
Спасибо........... - person Mark Spencer; 16.10.2016