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) {