From c74f998b9ad46785aaa2557a4033c056574dc937 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Tue, 12 Apr 2016 06:08:07 +0200
Subject: v3_kernel: Construct literal lists properly

Use cerl:make_list/1 instead of a home-made make_list/1 to ensure that
literal lists are constructed as literals. In a future release, we
would like to forbid in the loader construction of literal lists using
instructions like:

   put_list {atom,a} [] Dst

The proper way is:

   move {literal,[a]} {x,0}

Also update the comment about "put_list Const [] Dst" in ops.tab.
---
 erts/emulator/beam/ops.tab | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'erts')

diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab
index 96a3a72bb5..83b0299ddd 100644
--- a/erts/emulator/beam/ops.tab
+++ b/erts/emulator/beam/ops.tab
@@ -529,9 +529,9 @@ i_put_tuple x I
 i_put_tuple y I
 
 #
-# The instruction "put_list Const [] Dst" will not be generated by
-# the current BEAM compiler. But until R15A, play it safe by handling
-# that instruction with the following transformation.
+# The instruction "put_list Const [] Dst" were generated in rare
+# circumstances up to and including OTP 18. Starting with OTP 19,
+# AFAIK, it should never be generated.
 #
 put_list Const=c n Dst => move Const x | put_list x n Dst
 
-- 
cgit v1.2.3