UNPKG

11.8 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/prepack-standalone.js"],"names":["prepackSources","sources","options","defaultOptions","debuggerConfigArgs","statistics","undefined","realmOptions","errorHandler","realm","SerializerStatistics","additionalGlobals","check","generator","Generator","pathConditions","logger","Logger","internalDebug","modules","Modules","logModules","delayUnsupportedRequires","accelerateUnsupportedRequires","result","$GlobalEnv","executeSources","AbruptCompletion","checkResidualFunctions","code","map","serialize","residual","serializer","Serializer","serialized","init","sourceMaps","onParse","debuggerInstance","shutdown","FatalError","residualSources","filePath","outputFilename","fileContents","sourceMapContents","JSON","stringify","debugChannel","executePartialEvaluator","startFunc","totalToAnalyze","env","$GlobalObject","makeSimple","diag","suppressDiagnostics","handleError","severity","resolveInitializedModules","residualHeapVisitor","ResidualHeapVisitor","Map","visitRoots","hasErrors","totalFunctions","nonFatalFunctions","fi","functionInstances","values","fv","functionValue","console","log","thisValue","intrinsics","null","n","getLength","args","i","name","ob","AbstractValue","createFromType","ObjectValue","intrinsicName","evaluateForEffectsInGlobalEnv","e","prepackVersion","version"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) 2017-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/* @flow */\n\n/* APIs for running Prepack for code where a model of the environment is supplied as part of the code. */\n\nimport Serializer from \"./serializer/index.js\";\nimport construct_realm from \"./construct_realm.js\";\nimport initializeGlobals from \"./globals.js\";\nimport { EvaluateDirectCallWithArgList } from \"./methods/index.js\";\nimport { getRealmOptions, getSerializerOptions } from \"./prepack-options\";\nimport { FatalError } from \"./errors.js\";\nimport type { SourceFile } from \"./types.js\";\nimport { AbruptCompletion } from \"./completions.js\";\nimport type { PrepackOptions } from \"./prepack-options\";\nimport { defaultOptions } from \"./options\";\nimport invariant from \"./invariant.js\";\nimport { version } from \"../package.json\";\nimport { type SerializedResult } from \"./serializer/types.js\";\nimport { SerializerStatistics } from \"./serializer/statistics.js\";\nimport { ResidualHeapVisitor } from \"./serializer/ResidualHeapVisitor.js\";\nimport { Modules } from \"./utils/modules.js\";\nimport { Logger } from \"./utils/logger.js\";\nimport { Generator } from \"./utils/generator.js\";\nimport { AbstractObjectValue, AbstractValue, ObjectValue } from \"./values/index.js\";\nimport type { DebuggerConfigArguments } from \"./types\";\n\nexport function prepackSources(\n sources: Array<SourceFile>,\n options: PrepackOptions = defaultOptions,\n debuggerConfigArgs: void | DebuggerConfigArguments,\n statistics: SerializerStatistics | void = undefined\n): SerializedResult {\n let realmOptions = getRealmOptions(options);\n realmOptions.errorHandler = options.errorHandler;\n let realm = construct_realm(realmOptions, debuggerConfigArgs, statistics || new SerializerStatistics());\n initializeGlobals(realm);\n if (typeof options.additionalGlobals === \"function\") {\n options.additionalGlobals(realm);\n }\n\n if (options.check) {\n realm.generator = new Generator(realm, \"main\", realm.pathConditions);\n let logger = new Logger(realm, !!options.internalDebug);\n let modules = new Modules(\n realm,\n logger,\n !!options.logModules,\n !!options.delayUnsupportedRequires,\n !!options.accelerateUnsupportedRequires\n );\n let [result] = realm.$GlobalEnv.executeSources(sources);\n if (result instanceof AbruptCompletion) throw result;\n invariant(options.check);\n checkResidualFunctions(modules, options.check[0], options.check[1]);\n return { code: \"\", map: undefined };\n } else if (options.serialize === true || options.residual !== true) {\n let serializer = new Serializer(realm, getSerializerOptions(options));\n let serialized = serializer.init(sources, options.sourceMaps, options.onParse);\n\n //Turn off the debugger if there is one\n if (realm.debuggerInstance) {\n realm.debuggerInstance.shutdown();\n }\n\n if (!serialized) {\n throw new FatalError(\"serializer failed\");\n }\n\n if (!options.residual) return serialized;\n let residualSources = [\n {\n filePath: options.outputFilename || \"unknown\",\n fileContents: serialized.code,\n sourceMapContents: serialized.map && JSON.stringify(serialized.map),\n },\n ];\n let debugChannel = debuggerConfigArgs ? debuggerConfigArgs.debugChannel : undefined;\n realm = construct_realm(realmOptions, debugChannel);\n initializeGlobals(realm);\n if (typeof options.additionalGlobals === \"function\") {\n options.additionalGlobals(realm);\n }\n realm.generator = new Generator(realm, \"main\", realm.pathConditions);\n let result = realm.$GlobalEnv.executePartialEvaluator(residualSources, options);\n if (result instanceof AbruptCompletion) throw result;\n return { ...result };\n } else {\n invariant(options.residual);\n realm.generator = new Generator(realm, \"main\", realm.pathConditions);\n let result = realm.$GlobalEnv.executePartialEvaluator(sources, options);\n if (result instanceof AbruptCompletion) throw result;\n return { ...result };\n }\n}\n\nfunction checkResidualFunctions(modules: Modules, startFunc: number, totalToAnalyze: number) {\n let realm = modules.realm;\n let env = realm.$GlobalEnv;\n realm.$GlobalObject.makeSimple();\n let errorHandler = realm.errorHandler;\n if (!errorHandler) errorHandler = (diag, suppressDiagnostics) => realm.handleError(diag);\n realm.errorHandler = (diag, suppressDiagnostics) => {\n invariant(errorHandler);\n if (diag.severity === \"FatalError\") return errorHandler(diag, realm.suppressDiagnostics);\n else return \"Recover\";\n };\n modules.resolveInitializedModules();\n let residualHeapVisitor = new ResidualHeapVisitor(realm, modules.logger, modules, new Map(), \"NO_REFERENTIALIZE\");\n residualHeapVisitor.visitRoots();\n if (modules.logger.hasErrors()) return;\n let totalFunctions = 0;\n let nonFatalFunctions = 0;\n for (let fi of residualHeapVisitor.functionInstances.values()) {\n totalFunctions++;\n if (totalFunctions <= startFunc) continue;\n let fv = fi.functionValue;\n console.log(\"analyzing: \" + totalFunctions);\n let thisValue = realm.intrinsics.null;\n let n = fv.getLength() || 0;\n let args = [];\n for (let i = 0; i < n; i++) {\n let name = \"dummy parameter\";\n let ob: AbstractObjectValue = (AbstractValue.createFromType(realm, ObjectValue, name): any);\n ob.makeSimple(\"transitive\");\n ob.intrinsicName = name;\n args[i] = ob;\n }\n // todo: eventually join these effects, apply them to the global state and iterate to a fixed point\n try {\n realm.evaluateForEffectsInGlobalEnv(() =>\n EvaluateDirectCallWithArgList(modules.realm, true, env, fv, fv, thisValue, args)\n );\n nonFatalFunctions++;\n } catch (e) {}\n if (totalFunctions >= startFunc + totalToAnalyze) break;\n }\n console.log(\n `Analyzed ${totalToAnalyze} functions starting at ${startFunc} of which ${nonFatalFunctions} did not have fatal errors.`\n );\n}\n\nexport const prepackVersion = version;\n"],"file":"prepack-standalone.js"}
\No newline at end of file