Commit 265531154a05a26e9b79819ddd068c285e681cbc

Authored by j_mayer
1 parent 3f4afa14

Fix attempt to inline recursive functions.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3700 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 2 changed files with 26 additions and 4 deletions
... ... @@ -31,6 +31,8 @@
31 31 /* XXX: make it dynamic */
32 32 StructEntry struct_entries[MAX_STRUCTS];
33 33  
  34 +static const argtype *thunk_type_next_ptr(const argtype *type_ptr);
  35 +
34 36 static inline const argtype *thunk_type_next(const argtype *type_ptr)
35 37 {
36 38 int type;
... ... @@ -47,9 +49,9 @@ static inline const argtype *thunk_type_next(const argtype *type_ptr)
47 49 case TYPE_PTRVOID:
48 50 return type_ptr;
49 51 case TYPE_PTR:
50   - return thunk_type_next(type_ptr);
  52 + return thunk_type_next_ptr(type_ptr);
51 53 case TYPE_ARRAY:
52   - return thunk_type_next(type_ptr + 1);
  54 + return thunk_type_next_ptr(type_ptr + 1);
53 55 case TYPE_STRUCT:
54 56 return type_ptr + 1;
55 57 default:
... ... @@ -57,6 +59,11 @@ static inline const argtype *thunk_type_next(const argtype *type_ptr)
57 59 }
58 60 }
59 61  
  62 +static const argtype *thunk_type_next_ptr(const argtype *type_ptr)
  63 +{
  64 + return thunk_type_next(type_ptr);
  65 +}
  66 +
60 67 void thunk_register_struct(int id, const char *name, const argtype *types)
61 68 {
62 69 const argtype *type_ptr;
... ... @@ -267,3 +274,15 @@ unsigned int host_to_target_bitmask(unsigned int alpha_mask,
267 274 }
268 275 return(x86_mask);
269 276 }
  277 +
  278 +#ifndef NO_THUNK_TYPE_SIZE
  279 +int thunk_type_size_array(const argtype *type_ptr, int is_host)
  280 +{
  281 + return thunk_type_size(type_ptr, is_host);
  282 +}
  283 +
  284 +int thunk_type_align_array(const argtype *type_ptr, int is_host)
  285 +{
  286 + return thunk_type_align(type_ptr, is_host);
  287 +}
  288 +#endif /* ndef NO_THUNK_TYPE_SIZE */
... ...
... ... @@ -75,6 +75,9 @@ const argtype *thunk_convert(void *dst, const void *src,
75 75  
76 76 extern StructEntry struct_entries[];
77 77  
  78 +int thunk_type_size_array(const argtype *type_ptr, int is_host);
  79 +int thunk_type_align_array(const argtype *type_ptr, int is_host);
  80 +
78 81 static inline int thunk_type_size(const argtype *type_ptr, int is_host)
79 82 {
80 83 int type, size;
... ... @@ -103,7 +106,7 @@ static inline int thunk_type_size(const argtype *type_ptr, int is_host)
103 106 break;
104 107 case TYPE_ARRAY:
105 108 size = type_ptr[1];
106   - return size * thunk_type_size(type_ptr + 2, is_host);
  109 + return size * thunk_type_size_array(type_ptr + 2, is_host);
107 110 case TYPE_STRUCT:
108 111 se = struct_entries + type_ptr[1];
109 112 return se->size[is_host];
... ... @@ -139,7 +142,7 @@ static inline int thunk_type_align(const argtype *type_ptr, int is_host)
139 142 }
140 143 break;
141 144 case TYPE_ARRAY:
142   - return thunk_type_align(type_ptr + 2, is_host);
  145 + return thunk_type_align_array(type_ptr + 2, is_host);
143 146 case TYPE_STRUCT:
144 147 se = struct_entries + type_ptr[1];
145 148 return se->align[is_host];
... ...