updated wrong handling of Value_t, not using unsafe.Pointer
This commit is contained in:
parent
3cae246546
commit
6ffe32a9df
@ -2,7 +2,6 @@ package interp
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"unsafe"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var debug bool = false
|
var debug bool = false
|
||||||
@ -60,7 +59,7 @@ func (p *process_t) merge_top_values() error {
|
|||||||
new_val = *v1 + *v2
|
new_val = *v1 + *v2
|
||||||
p.vsp--
|
p.vsp--
|
||||||
p.vstack[p.vsp] = nil
|
p.vstack[p.vsp] = nil
|
||||||
p.vstack[p.vsp-1] = unsafe.Pointer(&new_val)
|
p.vstack[p.vsp-1] = &new_val
|
||||||
p.ctx.count--
|
p.ctx.count--
|
||||||
|
|
||||||
if debug {
|
if debug {
|
||||||
@ -121,6 +120,10 @@ func (p *process_t) GetNumArgs() int {
|
|||||||
return p.ctx.count - 2
|
return p.ctx.count - 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *process_t) ReturnString(val string) {
|
||||||
|
p.vstack[p.vsp-p.ctx.count] = &val
|
||||||
|
}
|
||||||
|
|
||||||
func (p *process_t) Return(val Value_t) {
|
func (p *process_t) Return(val Value_t) {
|
||||||
p.vstack[p.vsp-p.ctx.count] = val
|
p.vstack[p.vsp-p.ctx.count] = val
|
||||||
}
|
}
|
||||||
@ -178,7 +181,7 @@ func (interp *Interp) dump_vstack(p *process_t) {
|
|||||||
}*/
|
}*/
|
||||||
switch t := p.vstack[i].(type) {
|
switch t := p.vstack[i].(type) {
|
||||||
case *string:
|
case *string:
|
||||||
fmt.Printf(" %d => [%s]\n", i, t)
|
fmt.Printf(" %d => [%s]\n", i, *t)
|
||||||
case *Cnode_t:
|
case *Cnode_t:
|
||||||
fmt.Printf(" %d => ", i)
|
fmt.Printf(" %d => ", i)
|
||||||
interp.dump_cnodes(t, false)
|
interp.dump_cnodes(t, false)
|
||||||
|
@ -74,22 +74,22 @@ func proc_puts(p *process_t) error {
|
|||||||
if nargs >= 1 {
|
if nargs >= 1 {
|
||||||
p.Return(v)
|
p.Return(v)
|
||||||
} else {
|
} else {
|
||||||
p.Return("hello")
|
p.ReturnString("hello")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func proc_false(p *process_t) error {
|
func proc_false(p *process_t) error {
|
||||||
p.Return("false")
|
p.ReturnString("false")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func proc_true(p *process_t) error {
|
func proc_true(p *process_t) error {
|
||||||
p.Return("true")
|
p.ReturnString("true")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func proc_null(p *process_t) error {
|
func proc_null(p *process_t) error {
|
||||||
p.Return("")
|
p.ReturnString("")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user