Browse Source

+ implemented thlcgwasm.g_unreachable, emits the 'unreachable' WebAssembly instruction

Nikolay Nikolov 3 years ago
parent
commit
9526b939a2
1 changed files with 7 additions and 0 deletions
  1. 7 0
      compiler/wasm32/hlcgcpu.pas

+ 7 - 0
compiler/wasm32/hlcgcpu.pas

@@ -99,6 +99,8 @@ uses
       procedure a_loadfpu_reg_ref(list: TAsmList; fromsize, tosize: tdef; reg: tregister; const ref: treference); override;
       procedure a_loadfpu_reg_ref(list: TAsmList; fromsize, tosize: tdef; reg: tregister; const ref: treference); override;
       procedure a_loadfpu_reg_reg(list: TAsmList; fromsize, tosize: tdef; reg1, reg2: tregister); override;
       procedure a_loadfpu_reg_reg(list: TAsmList; fromsize, tosize: tdef; reg1, reg2: tregister); override;
 
 
+      procedure g_unreachable(list: TAsmList); override;
+
       procedure g_concatcopy(list : TAsmList;size: tdef; const source,dest : treference); override;
       procedure g_concatcopy(list : TAsmList;size: tdef; const source,dest : treference); override;
 
 
       procedure g_proc_entry(list : TAsmList;localsize : longint;nostackframe:boolean); override;
       procedure g_proc_entry(list : TAsmList;localsize : longint;nostackframe:boolean); override;
@@ -1682,6 +1684,11 @@ implementation
       a_load_stack_reg(list,tosize,reg2);
       a_load_stack_reg(list,tosize,reg2);
     end;
     end;
 
 
+  procedure thlcgwasm.g_unreachable(list: TAsmList);
+    begin
+      list.Concat(taicpu.op_none(a_unreachable));
+    end;
+
   procedure thlcgwasm.g_concatcopy(list: TAsmList; size: tdef; const source, dest: treference);
   procedure thlcgwasm.g_concatcopy(list: TAsmList; size: tdef; const source, dest: treference);
     var
     var
       pd: tprocdef;
       pd: tprocdef;