From d72c6fd50067851167b5c8f7c13cebd040ff9a9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Gregorczyk?= Date: Wed, 7 Dec 2016 11:57:08 -0800 Subject: [PATCH] Do not call `toString` on functions in buildStyleInterpolator Reviewed By: vjeux Differential Revision: D4292618 fbshipit-source-id: cd7cd1a88aeb2c800f2c2941c79855992613ec84 --- Libraries/Utilities/buildStyleInterpolator.js | 79 +++++++++---------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/Libraries/Utilities/buildStyleInterpolator.js b/Libraries/Utilities/buildStyleInterpolator.js index 4f6d0f875..195c29a7c 100644 --- a/Libraries/Utilities/buildStyleInterpolator.js +++ b/Libraries/Utilities/buildStyleInterpolator.js @@ -102,13 +102,13 @@ var ARGUMENT_NAMES_RE = /([^\s,]+)/g; * * inline(inlineMe, ['hi', 'bye']); // "hi = bye + bye;" * - * @param {function} func Any simple function who's arguments can be replaced via a regex. + * @param {string} fnStr Source of any simple function who's arguments can be + * replaced via a regex. * @param {array} replaceWithArgs Corresponding names of variables * within an environment, to replace `func` args with. * @return {string} Resulting function body string. */ -var inline = function(func, replaceWithArgs) { - var fnStr = func.toString(); +var inline = function(fnStr, replaceWithArgs) { var parameterNames = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')) .match(ARGUMENT_NAMES_RE) || []; @@ -126,11 +126,10 @@ var inline = function(func, replaceWithArgs) { }; /** - * Simply a convenient way to inline functions using the function's toString - * method. + * Simply a convenient way to inline functions using the inline function. */ var MatrixOps = { - unroll: function(matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) { + unroll: `function(matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) { m0 = matVar[0]; m1 = matVar[1]; m2 = matVar[2]; @@ -147,29 +146,29 @@ var MatrixOps = { m13 = matVar[13]; m14 = matVar[14]; m15 = matVar[15]; - }, + }`, - matrixDiffers: function(retVar, matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) { + matrixDiffers: `function(retVar, matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) { retVar = retVar || - m0 !== matVar[0] || - m1 !== matVar[1] || - m2 !== matVar[2] || - m3 !== matVar[3] || - m4 !== matVar[4] || - m5 !== matVar[5] || - m6 !== matVar[6] || - m7 !== matVar[7] || - m8 !== matVar[8] || - m9 !== matVar[9] || - m10 !== matVar[10] || - m11 !== matVar[11] || - m12 !== matVar[12] || - m13 !== matVar[13] || - m14 !== matVar[14] || - m15 !== matVar[15]; - }, + m0 !== matVar[0] || + m1 !== matVar[1] || + m2 !== matVar[2] || + m3 !== matVar[3] || + m4 !== matVar[4] || + m5 !== matVar[5] || + m6 !== matVar[6] || + m7 !== matVar[7] || + m8 !== matVar[8] || + m9 !== matVar[9] || + m10 !== matVar[10] || + m11 !== matVar[11] || + m12 !== matVar[12] || + m13 !== matVar[13] || + m14 !== matVar[14] || + m15 !== matVar[15]; + }`, - transformScale: function(matVar, opVar) { + transformScale: `function(matVar, opVar) { // Scaling matVar by opVar var x = opVar[0]; var y = opVar[1]; @@ -190,13 +189,13 @@ var MatrixOps = { matVar[13] = matVar[13]; matVar[14] = matVar[14]; matVar[15] = matVar[15]; - }, + }`, /** * All of these matrix transforms are not general purpose utilities, and are * only suitable for being inlined for the use of building up interpolators. */ - transformTranslate: function(matVar, opVar) { + transformTranslate: `function(matVar, opVar) { // Translating matVar by opVar var x = opVar[0]; var y = opVar[1]; @@ -205,13 +204,13 @@ var MatrixOps = { matVar[13] = matVar[1] * x + matVar[5] * y + matVar[9] * z + matVar[13]; matVar[14] = matVar[2] * x + matVar[6] * y + matVar[10] * z + matVar[14]; matVar[15] = matVar[3] * x + matVar[7] * y + matVar[11] * z + matVar[15]; - }, + }`, /** * @param {array} matVar Both the input, and the output matrix. * @param {quaternion specification} q Four element array describing rotation. */ - transformRotateRadians: function(matVar, q) { + transformRotateRadians: `function(matVar, q) { // Rotating matVar by q var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3]; var x2Quat = xQuat + xQuat; @@ -226,7 +225,7 @@ var MatrixOps = { var wxQuat = wQuat * x2Quat; var wyQuat = wQuat * y2Quat; var wzQuat = wQuat * z2Quat; - // Step 1: Inlines the construction of a quaternion matrix (`quatMat`) + // Step 1: Inlines the construction of a quaternion matrix ('quatMat') var quatMat0 = 1 - (yyQuat + zzQuat); var quatMat1 = xyQuat + wzQuat; var quatMat2 = xzQuat - wyQuat; @@ -267,13 +266,13 @@ var MatrixOps = { matVar[9] = b0 * a01 + b1 * a11 + b2 * a21; matVar[10] = b0 * a02 + b1 * a12 + b2 * a22; matVar[11] = b0 * a03 + b1 * a13 + b2 * a23; - } + }` }; // Optimized version of general operation applications that can be used when // the target matrix is known to be the identity matrix. var MatrixOpsInitial = { - transformScale: function(matVar, opVar) { + transformScale: `function(matVar, opVar) { // Scaling matVar known to be identity by opVar matVar[0] = opVar[0]; matVar[1] = 0; @@ -291,10 +290,10 @@ var MatrixOpsInitial = { matVar[13] = 0; matVar[14] = 0; matVar[15] = 1; - }, + }`, - transformTranslate: function(matVar, opVar) { - // Translating matVar known to be identity by opVar'; + transformTranslate: `function(matVar, opVar) { + // Translating matVar known to be identity by opVar; matVar[0] = 1; matVar[1] = 0; matVar[2] = 0; @@ -311,14 +310,14 @@ var MatrixOpsInitial = { matVar[13] = opVar[1]; matVar[14] = opVar[2]; matVar[15] = 1; - }, + }`, /** * @param {array} matVar Both the input, and the output matrix - assumed to be * identity. * @param {quaternion specification} q Four element array describing rotation. */ - transformRotateRadians: function(matVar, q) { + transformRotateRadians: `function(matVar, q) { // Rotating matVar which is known to be identity by q var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3]; @@ -334,7 +333,7 @@ var MatrixOpsInitial = { var wxQuat = wQuat * x2Quat; var wyQuat = wQuat * y2Quat; var wzQuat = wQuat * z2Quat; - // Step 1: Inlines the construction of a quaternion matrix (`quatMat`) + // Step 1: Inlines the construction of a quaternion matrix ('quatMat') var quatMat0 = 1 - (yyQuat + zzQuat); var quatMat1 = xyQuat + wzQuat; var quatMat2 = xzQuat - wyQuat; @@ -366,7 +365,7 @@ var MatrixOpsInitial = { matVar[13] = 0; matVar[14] = 0; matVar[15] = 1; - } + }` };