Преглед на файлове

* drop unused return values from the stack

git-svn-id: branches/wasm@48036 -
nickysn преди 4 години
родител
ревизия
f86665b97f
променени са 1 файла, в които са добавени 11 реда и са изтрити 0 реда
  1. 11 0
      compiler/wasm32/nwasmcal.pas

+ 11 - 0
compiler/wasm32/nwasmcal.pas

@@ -39,6 +39,8 @@ interface
        { twasmcallnode }
 
        twasmcallnode = class(tcgcallnode)
+       protected
+         procedure do_release_unused_return_value; override;
          procedure set_result_location(realresdef: tstoreddef); override;
        end;
 
@@ -50,6 +52,15 @@ implementation
 
       { twasmcallnode }
 
+    procedure twasmcallnode.do_release_unused_return_value;
+      begin
+        if is_void(resultdef) then
+          exit;
+        current_asmdata.CurrAsmList.concat(taicpu.op_none(a_drop));
+        // todo: decstack
+        //thlcgwasm(hlcg).decstack(current_asmdata.CurrAsmList,1);
+      end;
+
     procedure twasmcallnode.set_result_location(realresdef: tstoreddef);
       begin
         // default implementation is placing the return value on LOC_REGISTER.