Skip to content

Commit 25fb2ba

Browse files
Michał GregorczykMartin Konicek
Michał Gregorczyk
authored and
Martin Konicek
committed
Do not call toString on functions in buildStyleInterpolator
Reviewed By: vjeux Differential Revision: D4292618 fbshipit-source-id: cd7cd1a88aeb2c800f2c2941c79855992613ec84
1 parent dce77a3 commit 25fb2ba

File tree

1 file changed

+40
-41
lines changed

1 file changed

+40
-41
lines changed

Libraries/Utilities/buildStyleInterpolator.js

+40-41
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,13 @@ var ARGUMENT_NAMES_RE = /([^\s,]+)/g;
102102
*
103103
* inline(inlineMe, ['hi', 'bye']); // "hi = bye + bye;"
104104
*
105-
* @param {function} func Any simple function who's arguments can be replaced via a regex.
105+
* @param {string} fnStr Source of any simple function who's arguments can be
106+
* replaced via a regex.
106107
* @param {array<string>} replaceWithArgs Corresponding names of variables
107108
* within an environment, to replace `func` args with.
108109
* @return {string} Resulting function body string.
109110
*/
110-
var inline = function(func, replaceWithArgs) {
111-
var fnStr = func.toString();
111+
var inline = function(fnStr, replaceWithArgs) {
112112
var parameterNames = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))
113113
.match(ARGUMENT_NAMES_RE) ||
114114
[];
@@ -126,11 +126,10 @@ var inline = function(func, replaceWithArgs) {
126126
};
127127

128128
/**
129-
* Simply a convenient way to inline functions using the function's toString
130-
* method.
129+
* Simply a convenient way to inline functions using the inline function.
131130
*/
132131
var MatrixOps = {
133-
unroll: function(matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {
132+
unroll: `function(matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {
134133
m0 = matVar[0];
135134
m1 = matVar[1];
136135
m2 = matVar[2];
@@ -147,29 +146,29 @@ var MatrixOps = {
147146
m13 = matVar[13];
148147
m14 = matVar[14];
149148
m15 = matVar[15];
150-
},
149+
}`,
151150

152-
matrixDiffers: function(retVar, matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {
151+
matrixDiffers: `function(retVar, matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {
153152
retVar = retVar ||
154-
m0 !== matVar[0] ||
155-
m1 !== matVar[1] ||
156-
m2 !== matVar[2] ||
157-
m3 !== matVar[3] ||
158-
m4 !== matVar[4] ||
159-
m5 !== matVar[5] ||
160-
m6 !== matVar[6] ||
161-
m7 !== matVar[7] ||
162-
m8 !== matVar[8] ||
163-
m9 !== matVar[9] ||
164-
m10 !== matVar[10] ||
165-
m11 !== matVar[11] ||
166-
m12 !== matVar[12] ||
167-
m13 !== matVar[13] ||
168-
m14 !== matVar[14] ||
169-
m15 !== matVar[15];
170-
},
171-
172-
transformScale: function(matVar, opVar) {
153+
m0 !== matVar[0] ||
154+
m1 !== matVar[1] ||
155+
m2 !== matVar[2] ||
156+
m3 !== matVar[3] ||
157+
m4 !== matVar[4] ||
158+
m5 !== matVar[5] ||
159+
m6 !== matVar[6] ||
160+
m7 !== matVar[7] ||
161+
m8 !== matVar[8] ||
162+
m9 !== matVar[9] ||
163+
m10 !== matVar[10] ||
164+
m11 !== matVar[11] ||
165+
m12 !== matVar[12] ||
166+
m13 !== matVar[13] ||
167+
m14 !== matVar[14] ||
168+
m15 !== matVar[15];
169+
}`,
170+
171+
transformScale: `function(matVar, opVar) {
173172
// Scaling matVar by opVar
174173
var x = opVar[0];
175174
var y = opVar[1];
@@ -190,13 +189,13 @@ var MatrixOps = {
190189
matVar[13] = matVar[13];
191190
matVar[14] = matVar[14];
192191
matVar[15] = matVar[15];
193-
},
192+
}`,
194193

195194
/**
196195
* All of these matrix transforms are not general purpose utilities, and are
197196
* only suitable for being inlined for the use of building up interpolators.
198197
*/
199-
transformTranslate: function(matVar, opVar) {
198+
transformTranslate: `function(matVar, opVar) {
200199
// Translating matVar by opVar
201200
var x = opVar[0];
202201
var y = opVar[1];
@@ -205,13 +204,13 @@ var MatrixOps = {
205204
matVar[13] = matVar[1] * x + matVar[5] * y + matVar[9] * z + matVar[13];
206205
matVar[14] = matVar[2] * x + matVar[6] * y + matVar[10] * z + matVar[14];
207206
matVar[15] = matVar[3] * x + matVar[7] * y + matVar[11] * z + matVar[15];
208-
},
207+
}`,
209208

210209
/**
211210
* @param {array} matVar Both the input, and the output matrix.
212211
* @param {quaternion specification} q Four element array describing rotation.
213212
*/
214-
transformRotateRadians: function(matVar, q) {
213+
transformRotateRadians: `function(matVar, q) {
215214
// Rotating matVar by q
216215
var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3];
217216
var x2Quat = xQuat + xQuat;
@@ -226,7 +225,7 @@ var MatrixOps = {
226225
var wxQuat = wQuat * x2Quat;
227226
var wyQuat = wQuat * y2Quat;
228227
var wzQuat = wQuat * z2Quat;
229-
// Step 1: Inlines the construction of a quaternion matrix (`quatMat`)
228+
// Step 1: Inlines the construction of a quaternion matrix ('quatMat')
230229
var quatMat0 = 1 - (yyQuat + zzQuat);
231230
var quatMat1 = xyQuat + wzQuat;
232231
var quatMat2 = xzQuat - wyQuat;
@@ -267,13 +266,13 @@ var MatrixOps = {
267266
matVar[9] = b0 * a01 + b1 * a11 + b2 * a21;
268267
matVar[10] = b0 * a02 + b1 * a12 + b2 * a22;
269268
matVar[11] = b0 * a03 + b1 * a13 + b2 * a23;
270-
}
269+
}`
271270
};
272271

273272
// Optimized version of general operation applications that can be used when
274273
// the target matrix is known to be the identity matrix.
275274
var MatrixOpsInitial = {
276-
transformScale: function(matVar, opVar) {
275+
transformScale: `function(matVar, opVar) {
277276
// Scaling matVar known to be identity by opVar
278277
matVar[0] = opVar[0];
279278
matVar[1] = 0;
@@ -291,10 +290,10 @@ var MatrixOpsInitial = {
291290
matVar[13] = 0;
292291
matVar[14] = 0;
293292
matVar[15] = 1;
294-
},
293+
}`,
295294

296-
transformTranslate: function(matVar, opVar) {
297-
// Translating matVar known to be identity by opVar';
295+
transformTranslate: `function(matVar, opVar) {
296+
// Translating matVar known to be identity by opVar;
298297
matVar[0] = 1;
299298
matVar[1] = 0;
300299
matVar[2] = 0;
@@ -311,14 +310,14 @@ var MatrixOpsInitial = {
311310
matVar[13] = opVar[1];
312311
matVar[14] = opVar[2];
313312
matVar[15] = 1;
314-
},
313+
}`,
315314

316315
/**
317316
* @param {array} matVar Both the input, and the output matrix - assumed to be
318317
* identity.
319318
* @param {quaternion specification} q Four element array describing rotation.
320319
*/
321-
transformRotateRadians: function(matVar, q) {
320+
transformRotateRadians: `function(matVar, q) {
322321
323322
// Rotating matVar which is known to be identity by q
324323
var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3];
@@ -334,7 +333,7 @@ var MatrixOpsInitial = {
334333
var wxQuat = wQuat * x2Quat;
335334
var wyQuat = wQuat * y2Quat;
336335
var wzQuat = wQuat * z2Quat;
337-
// Step 1: Inlines the construction of a quaternion matrix (`quatMat`)
336+
// Step 1: Inlines the construction of a quaternion matrix ('quatMat')
338337
var quatMat0 = 1 - (yyQuat + zzQuat);
339338
var quatMat1 = xyQuat + wzQuat;
340339
var quatMat2 = xzQuat - wyQuat;
@@ -366,7 +365,7 @@ var MatrixOpsInitial = {
366365
matVar[13] = 0;
367366
matVar[14] = 0;
368367
matVar[15] = 1;
369-
}
368+
}`
370369
};
371370

372371

0 commit comments

Comments
 (0)