improve object function generation in ufuzz (#4434)

This commit is contained in:
Alex Lam S.L
2020-12-21 07:32:50 +00:00
committed by GitHub
parent c319030373
commit e1b2026929

View File

@@ -1267,10 +1267,10 @@ function createObjectFunction(recurmax, stmtDepth, canThrow) {
var nameLenBefore = VAR_NAMES.length; var nameLenBefore = VAR_NAMES.length;
var save_async = async; var save_async = async;
var s; var s;
var name = createObjectKey(recurmax, stmtDepth, canThrow);
createBlockVariables(recurmax, stmtDepth, canThrow, function(defns) { createBlockVariables(recurmax, stmtDepth, canThrow, function(defns) {
switch (rng(SUPPORT.computed_key ? 3 : 2)) { switch (rng(SUPPORT.computed_key ? 3 : 2)) {
case 0: case 0:
var name = createObjectKey(recurmax, stmtDepth, canThrow);
async = false; async = false;
s = [ s = [
"get " + name + "(){", "get " + name + "(){",
@@ -1282,23 +1282,21 @@ function createObjectFunction(recurmax, stmtDepth, canThrow) {
]; ];
break; break;
case 1: case 1:
var prop1 = createObjectKey(recurmax, stmtDepth, canThrow); var prop;
var prop2;
do { do {
prop2 = getDotKey(); prop = getDotKey();
} while (prop1 == prop2); } while (name == prop);
async = false; async = false;
s = [ s = [
"set " + prop1 + "(" + createVarName(MANDATORY) + "){", "set " + name + "(" + createVarName(MANDATORY) + "){",
strictMode(), strictMode(),
defns(), defns(),
_createStatements(2, recurmax, canThrow, CANNOT_BREAK, CANNOT_CONTINUE, CAN_RETURN, stmtDepth), _createStatements(2, recurmax, canThrow, CANNOT_BREAK, CANNOT_CONTINUE, CAN_RETURN, stmtDepth),
"this." + prop2 + createAssignment() + _createBinaryExpr(recurmax, COMMA_OK, stmtDepth, canThrow) + ";", "this." + prop + createAssignment() + _createBinaryExpr(recurmax, COMMA_OK, stmtDepth, canThrow) + ";",
"},", "},",
]; ];
break; break;
default: default:
var name = createObjectKey(recurmax, stmtDepth, canThrow);
async = SUPPORT.async && rng(50) == 0; async = SUPPORT.async && rng(50) == 0;
s = [ s = [
(async ? "async " : "") + name + "(" + createParams(save_async, NO_DUPLICATE) + "){", (async ? "async " : "") + name + "(" + createParams(save_async, NO_DUPLICATE) + "){",