Refactor Examples to use assert_eq
This commit updates all example files to use `assert_eq!` for verifying output, replacing the previous `Output:` comments. This change makes the examples more robust and self-testing. The benchmark results in some examples have also been slightly adjusted, reflecting minor performance variations after the refactoring. Additionally, a runtime panic handling mechanism has been introduced in the VM for function calls, which improves error reporting for unexpected panics.
This commit is contained in:
@@ -1,24 +1,23 @@
|
||||
;; Benchmark: 102ns
|
||||
;; Benchmark-Repeat: 20685
|
||||
;; Output: [42 150]
|
||||
;; Benchmark: 196ns
|
||||
;; Benchmark-Repeat: 10532
|
||||
(do
|
||||
;; 1. Provokation Stack-Gap (bei Optimization Level 2)
|
||||
(def result
|
||||
(fn []
|
||||
(do
|
||||
(def result
|
||||
(fn []
|
||||
(do
|
||||
;; Wird entfernt, Slot 0 ist dann "leer"
|
||||
(def unused 10)
|
||||
(def unused 10)
|
||||
;; Bleibt auf Slot 1 -> Lücke!
|
||||
(def used 42)
|
||||
(def used 42)
|
||||
used)))
|
||||
|
||||
;; 2. Provokation Inlining-Blockade
|
||||
;; Diese Funktion wird nicht inlined, weil sie ein 'def' enthält
|
||||
(def complex-add
|
||||
(fn [a]
|
||||
(do
|
||||
(def b 100)
|
||||
(def complex-add
|
||||
(fn [a]
|
||||
(do
|
||||
(def b 100)
|
||||
(+ a b))))
|
||||
|
||||
[(result) (complex-add 50)]
|
||||
(assert-eq [42 150] [(result) (complex-add 50)])
|
||||
)
|
||||
Reference in New Issue
Block a user