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
## 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
Features

View file

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