From 16f68967338653d3d8f925b854f054526b10ddd8 Mon Sep 17 00:00:00 2001 From: stenman Date: Wed, 20 Aug 2003 11:58:50 +0000 Subject: TailCall optimization for jvm. --- config/list/compiler.lst | 3 +-- sources/scalac/transformer/TailCallPhase.java | 36 +++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 sources/scalac/transformer/TailCallPhase.java diff --git a/config/list/compiler.lst b/config/list/compiler.lst index 1c972ff140..c5e3315f6f 100644 --- a/config/list/compiler.lst +++ b/config/list/compiler.lst @@ -100,12 +100,11 @@ transformer/ExpandMixinsPhase.java transformer/LambdaLift.java transformer/LambdaLiftPhase.java transformer/OwnerTransformer.java +transformer/TailCall.java transformer/TransMatch.java transformer/TransMatchPhase.java transformer/UnCurry.java transformer/UnCurryPhase.java -transformer/TailCall.java -transformer/TailCallPhase.java transformer/matching/AlgebraicMatcher.java transformer/matching/Autom2Scala.java diff --git a/sources/scalac/transformer/TailCallPhase.java b/sources/scalac/transformer/TailCallPhase.java new file mode 100644 index 0000000000..487f40743b --- /dev/null +++ b/sources/scalac/transformer/TailCallPhase.java @@ -0,0 +1,36 @@ +/* ____ ____ ____ ____ ______ *\ +** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala ** +** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL ** +** /_____/\____/\___/\____/____/ ** +\* */ + +// $Id$ + +package scalac.transformer; + +import scalac.Global; +import scalac.Phase; +import scalac.PhaseDescriptor; +import scalac.Unit; + +public class TailCallPhase extends Phase { + + //######################################################################## + // Public Constructors + + /** Initializes this instance. */ + public TailCallPhase(Global global, PhaseDescriptor descriptor) { + super(global, descriptor); + } + + //######################################################################## + // Public Methods + + /** Applies this phase to the given compilation units. */ + public void apply(Unit[] units) { + for (int i = 0; i < units.length; i++) + new TailCall(global, descriptor).apply(units[i]); + } + + +} -- cgit v1.2.3