¿Hay alguna manera en .NET, usando Reflection.Emit
, para acceder al elemento que está más arriba de la pila? Entonces, si A está arriba, y B a continuación - Quiero procesar B, entonces A. Sería correcto duplicar B arriba de A (ya que puedo simplemente "abrir" la segunda B cuando llegue a ella).Reflection.Emit: accede al elemento más al máximo de la pila
Actualmente, estoy declarando local:
LocalBuilder loc = il.DeclareLocal(typeof(Foo));
il.Emit(OpCodes.Stloc, loc); // store and pop topmost stack item
// work with (pop) previous stack item
il.Emit(OpCodes.Ldloc, loc); // push old topmost stack item
¿Existe una ruta que no necesita lo local explícito?
Para el "por qué" - esto es en el código generado que tendría que introducir más locales que yo quiera. Si pudiera usar la parte superior de la pila, podría ahorrar cantidades no triviales de espacio de pila (los locales están reservados independientemente del uso, AFAIK). –