aboutsummaryrefslogtreecommitdiffstats
path: root/erts
diff options
context:
space:
mode:
authorJohn Högberg <[email protected]>2019-02-28 09:21:39 +0100
committerJohn Högberg <[email protected]>2019-02-28 09:21:39 +0100
commit236436e82f97652c8375d51f8eded9bd4a3201f4 (patch)
tree7c0a92e1f6712013dbba8e7dc0dc3bcd73e09250 /erts
parentb0f099c8a7eb47ee2b894f58b8e71bb28c512be8 (diff)
parent69d2b9c3c8d6cde36b1f8b64f17f183b840a04b6 (diff)
downloadotp-236436e82f97652c8375d51f8eded9bd4a3201f4.tar.gz
otp-236436e82f97652c8375d51f8eded9bd4a3201f4.tar.bz2
otp-236436e82f97652c8375d51f8eded9bd4a3201f4.zip
Merge branch 'john/compiler/refactor-validator-type-management'
* john/compiler/refactor-validator-type-management: beam_validator: Clarify a comment beam_validator: Make call argument validation stricter beam_validator: Don't explode when building terms in receive beam_validator: Improve 'binary' type tracking beam_validator: Infer tuple element types beam_validator: Tolerate the 'receive' hack in prim_eval beam_validator: Track types by value rather than by register beam_validator: Disregard 'none' on join beam_validator: Handle is_number, and join(float,int) -> number beam_validator: Treat is_nil as is_eq_exact with nil beam_validator: Simplify get_element_type beam_validator: Fix literal handling in meet/2 beam_validator: Use literals as keys in container (tuple) elements beam_validator: Refactor try/catch handling, again beam_validator: Refactor register initialization beam_validator: Refactor stack allocation beam_validator: Handle argument/return types for more functions beam_validator: Don't forget last element when using put_tuple beam_jump: Fail label of select_val is unsafe for move elimination cerl_sets: Use maps:filter/2 in filter/2
Diffstat (limited to 'erts')
-rw-r--r--erts/preloaded/src/prim_eval.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/erts/preloaded/src/prim_eval.S b/erts/preloaded/src/prim_eval.S
index e4b1560517..900fda5d89 100644
--- a/erts/preloaded/src/prim_eval.S
+++ b/erts/preloaded/src/prim_eval.S
@@ -42,6 +42,10 @@
{label,3}.
{loop_rec,{f,5},{x,0}}.
{move,{y,1},{x,1}}.
+ %% Tell the validator that it's safe to pass the message as an argument,
+ %% as the match fun is "known" not to build a term with it, and the
+ %% loop_rec instruction has disabled the GC.
+ {'%', {remove_fragility, {x,0}}}.
{call_fun,1}.
{test,is_ne_exact,{f,4},[{x,0},{atom,nomatch}]}.
remove_message.