]> Nishi Git Mirror - gwion.git/commitdiff
:art: Pure optimization
authorfennecdjay <astor.jeremie@wanadoo.fr>
Sun, 20 Jan 2019 20:22:58 +0000 (21:22 +0100)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Sun, 20 Jan 2019 20:22:58 +0000 (21:22 +0100)
src/emit/emit.c

index 67b1648b9635668e29af34328b464c7042ffc132..8b59dbb17adf8c5f61bd4fa0a7ed370cfe7cbabc 100644 (file)
@@ -715,9 +715,12 @@ static inline void stack_alloc_this(const Emitter emit) {
 static m_bool scoped_stmt(const Emitter emit, const Stmt stmt, const m_bool pop) {
   ++emit->env->scope;
   emit_push_scope(emit);
-  emit_add_instr(emit, GcIni);
+  const m_bool pure = SAFE_FLAG(emit->env->func, pure);
+  if(!pure)
+    emit_add_instr(emit, GcIni);
   CHECK_BB(emit_stmt(emit, stmt, pop))
-  emit_add_instr(emit, GcEnd);
+  if(!pure)
+    emit_add_instr(emit, GcEnd);
   emit_pop_scope(emit);
   --emit->env->scope;
   return GW_OK;