Automated rollback of commit f1013485d41efd8503f9d4f937e17d1b4bc91ed3.
*** Reason for rollback ***
Introduced a bug in skylark that caused intellij TAP test to fail. The bug was not caught by any skylark/blaze/bazel tests.
*** Original change description ***
Optimize GC churn of parameter bindings performed before each user defined function call.
RELNOTES: None
PiperOrigin-RevId: 188249713
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java
index 54fdab2..b4fc95f 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java
@@ -65,15 +65,15 @@
Profiler.instance().startTask(ProfilerTask.SKYLARK_USER_FN, getName());
try {
- ImmutableList<String> argumentNames = signature.getSignature().getNames();
- env.enterScope(
- this,
- LexicalFrame.createForUserDefinedFunctionCall(
- argumentNames,
- arguments,
- env),
- ast,
- definitionGlobals);
+ env.enterScope(this, LexicalFrame.create(env.mutability()), ast, definitionGlobals);
+ ImmutableList<String> names = signature.getSignature().getNames();
+
+ // Registering the functions's arguments as variables in the local Environment
+ int i = 0;
+ for (String name : names) {
+ env.update(name, arguments[i++]);
+ }
+
Eval eval = new Eval(env);
try {
for (Statement stmt : statements) {