diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1995-06-22 10:11:18 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1995-06-22 10:11:18 +0000 |
commit | 41bd2b61538eedb5d24dcae01b11e533a398dff8 (patch) | |
tree | a8f60e0397eaebdcba0f2000c7deaff28b0f7371 /asmcomp | |
parent | 57c7dfd8fed5efd2d66f0b990941ade7382fa012 (diff) | |
download | ocaml-41bd2b61538eedb5d24dcae01b11e533a398dff8.tar.gz |
Fermetures representees en un seul bloc
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@49 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'asmcomp')
-rw-r--r-- | asmcomp/cmm.mli | 6 | ||||
-rw-r--r-- | asmcomp/emit_alpha.mlp | 14 | ||||
-rw-r--r-- | asmcomp/emit_i386.mlp | 14 | ||||
-rw-r--r-- | asmcomp/emit_sparc.mlp | 14 |
4 files changed, 31 insertions, 17 deletions
diff --git a/asmcomp/cmm.mli b/asmcomp/cmm.mli index 1ab22144e3..bcb03b0b47 100644 --- a/asmcomp/cmm.mli +++ b/asmcomp/cmm.mli @@ -80,12 +80,14 @@ type fundecl = fun_body: expression } type data_item = - Clabel of string + Cdefine_symbol of string + | Cdefine_label of int | Cint8 of int | Cint16 of int | Cint of int | Cfloat of string - | Caddress of string + | Csymbol_address of string + | Clabel_address of int | Cstring of string | Cskip of int | Calign of int diff --git a/asmcomp/emit_alpha.mlp b/asmcomp/emit_alpha.mlp index f6a61714be..cc7689bd98 100644 --- a/asmcomp/emit_alpha.mlp +++ b/asmcomp/emit_alpha.mlp @@ -548,9 +548,11 @@ let fundecl fundecl = (* Emission of data *) let emit_item = function - Clabel lbl -> - ` .globl {emit_symbol lbl}\n`; - `{emit_symbol lbl}:\n` + Cdefine_symbol s -> + ` .globl {emit_symbol s}\n`; + `{emit_symbol s}:\n` + | Cdefine_label lbl -> + `{emit_label (10000 + lbl)}:\n` | Cint8 n -> ` .byte {emit_int n}\n` | Cint16 n -> @@ -559,8 +561,10 @@ let emit_item = function ` .quad {emit_int n}\n` | Cfloat f -> ` .double {emit_string f}\n` - | Caddress lbl -> - ` .quad {emit_symbol lbl}\n` + | Csymbol_address s -> + ` .quad {emit_symbol s}\n` + | Clabel_address lbl -> + ` .quad {emit_label (10000 + lbl)}\n` | Cstring s -> let l = String.length s in if l = 0 then () diff --git a/asmcomp/emit_i386.mlp b/asmcomp/emit_i386.mlp index e7816f4f27..8f17fbc793 100644 --- a/asmcomp/emit_i386.mlp +++ b/asmcomp/emit_i386.mlp @@ -447,9 +447,11 @@ let fundecl fundecl = (* Emission of data *) let emit_item = function - Clabel lbl -> - ` .globl _{emit_symbol lbl}\n`; - `_{emit_symbol lbl}:\n` + Cdefine_symbol s -> + ` .globl _{emit_symbol s}\n`; + `_{emit_symbol s}:\n` + | Cdefine_label lbl -> + `{emit_label (10000 + lbl)}:\n` | Cint8 n -> ` .byte {emit_int n}\n` | Cint16 n -> @@ -458,8 +460,10 @@ let emit_item = function ` .long {emit_int n}\n` | Cfloat f -> ` .double {emit_string f}\n` - | Caddress lbl -> - ` .long _{emit_symbol lbl}\n` + | Csymbol_address s -> + ` .long _{emit_symbol s}\n` + | Clabel_address lbl -> + ` .long {emit_label (10000 + lbl)}\n` | Cstring s -> let l = String.length s in if l = 0 then () diff --git a/asmcomp/emit_sparc.mlp b/asmcomp/emit_sparc.mlp index ae6c00a5bb..5b005ea597 100644 --- a/asmcomp/emit_sparc.mlp +++ b/asmcomp/emit_sparc.mlp @@ -523,9 +523,11 @@ let fundecl fundecl = (* Emission of data *) let emit_item = function - Clabel lbl -> - ` .global _{emit_symbol lbl}\n`; - `_{emit_symbol lbl}:\n` + Cdefine_symbol s -> + ` .global _{emit_symbol s}\n`; + `_{emit_symbol s}:\n` + | Cdefine_label lbl -> + `{emit_label (lbl + 10000)}:\n` | Cint8 n -> ` .byte {emit_int n}\n` | Cint16 n -> @@ -534,8 +536,10 @@ let emit_item = function ` .word {emit_int n}\n` | Cfloat f -> ` .double 0r{emit_string f}\n` - | Caddress lbl -> - ` .word _{emit_symbol lbl}\n` + | Csymbol_address s -> + ` .word _{emit_symbol s}\n` + | Clabel_address s -> + ` .word {emit_label (lbl + 10000)}\n` | Cstring s -> let l = String.length s in if l = 0 then () |