From c5b2f1af67186940735cca0af3c257ec9fb084cb Mon Sep 17 00:00:00 2001 From: otya128 Date: Sat, 13 Jun 2015 20:23:40 +0900 Subject: [PATCH] =?UTF-8?q?1=E3=81=A4=E3=81=BE=E3=81=A7=E3=81=AE=E5=80=A4?= =?UTF-8?q?=E3=82=92=E8=BF=94=E3=81=9B=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SMILEBASIC/VM.d | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/SMILEBASIC/VM.d b/SMILEBASIC/VM.d index 4758465..55e6553 100644 --- a/SMILEBASIC/VM.d +++ b/SMILEBASIC/VM.d @@ -51,6 +51,10 @@ class VM { code[pc].execute(this); } + if(stacki != 0) + { + stderr.writeln("CompilerBug?:stack"); + } } void push(ref Value value) { @@ -697,11 +701,19 @@ class ReturnFunction : Code override void execute(VM vm) { int oldstacki = vm.stacki; + Value retexpr; + if(func.returnExpr) + { + vm.pop(retexpr); + } vm.stacki = vm.bp + 2; Value bp, pc; vm.pop(pc); vm.pop(bp); - vm.push(Value(235)); + if(func.returnExpr) + { + vm.push(retexpr); + } vm.pc = pc.integerValue; vm.bp = bp.integerValue; }