Issue #445 - Do not inline prims that open ports

It is dangerous to inline these operations because the resource may be opened multiple times and/or not closed properly.
This commit is contained in:
Justin Ethier 2021-02-05 17:01:01 -05:00
parent 8f7516ce43
commit 71793eca9c
2 changed files with 20 additions and 5 deletions

View file

@ -1,5 +1,11 @@
# Changelog # Changelog
## 0.27 - TBD
Bug Fixes
- Prevent the compiler from inlining calls to primitives that open ports, avoiding a range of issues such as an open file operation being inlined across multiple places in the intermediate code.
## 0.26 - February 3, 2021 ## 0.26 - February 3, 2021
Features Features

View file

@ -156,13 +156,18 @@
global global
defined-by defined-by
defines-lambda-id defines-lambda-id
const const-value const
ref-count ref-by const-value
ref-count
ref-by
mutated-by-set mutated-by-set
reassigned assigned-value reassigned
app-fnc-count app-arg-count assigned-value
app-fnc-count
app-arg-count
cannot-inline cannot-inline
inlinable mutated-indirectly inlinable
mutated-indirectly
cont cont
def-in-loop def-in-loop
ref-in-loop ref-in-loop
@ -1173,6 +1178,10 @@
Cyc-fast-vector-3 Cyc-fast-vector-3
Cyc-fast-vector-4 Cyc-fast-vector-4
Cyc-fast-vector-5 Cyc-fast-vector-5
open-input-file
open-output-file
open-binary-input-file
open-binary-output-file
))) )))
(define (prim-calls-inlinable? prim-calls) (define (prim-calls-inlinable? prim-calls)