@@ -155,6 +155,7 @@ class Function final {
155155
156156  // / Checks if the function is virtual.
157157  bool  isVirtual () const  { return  Virtual; };
158+   bool  isImmediate () const  { return  Immediate; }
158159
159160  // / Checks if the function is a constructor.
160161  bool  isConstructor () const  { return  Kind == FunctionKind::Ctor; }
@@ -276,22 +277,32 @@ class Function final {
276277  // / List of parameter offsets.
277278  llvm::SmallVector<unsigned , 8 > ParamOffsets;
278279  // / Flag to indicate if the function is valid.
279-   bool  IsValid = false ;
280+   LLVM_PREFERRED_TYPE (bool )
281+   unsigned  IsValid : 1 ;
280282  // / Flag to indicate if the function is done being
281283  // / compiled to bytecode.
282-   bool  IsFullyCompiled = false ;
284+   LLVM_PREFERRED_TYPE (bool )
285+   unsigned  IsFullyCompiled : 1 ;
283286  // / Flag indicating if this function takes the this pointer
284287  // / as the first implicit argument
285-   bool  HasThisPointer = false ;
288+   LLVM_PREFERRED_TYPE (bool )
289+   unsigned  HasThisPointer : 1 ;
286290  // / Whether this function has Return Value Optimization, i.e.
287291  // / the return value is constructed in the caller's stack frame.
288292  // / This is done for functions that return non-primive values.
289-   bool  HasRVO = false ;
293+   LLVM_PREFERRED_TYPE (bool )
294+   unsigned  HasRVO : 1 ;
290295  // / If we've already compiled the function's body.
291-   bool  HasBody = false ;
292-   bool  Defined = false ;
293-   bool  Variadic = false ;
294-   bool  Virtual = false ;
296+   LLVM_PREFERRED_TYPE (bool )
297+   unsigned  HasBody : 1 ;
298+   LLVM_PREFERRED_TYPE (bool )
299+   unsigned  Defined : 1 ;
300+   LLVM_PREFERRED_TYPE (bool )
301+   unsigned  Variadic : 1 ;
302+   LLVM_PREFERRED_TYPE (bool )
303+   unsigned  Virtual : 1 ;
304+   LLVM_PREFERRED_TYPE (bool )
305+   unsigned  Immediate : 1 ;
295306
296307public: 
297308  // / Dumps the disassembled bytecode to \c llvm::errs().
0 commit comments