/[pcsx2_0.9.7]/trunk/common/include/x86emitter/implement/jmpcall.h
ViewVC logotype

Diff of /trunk/common/include/x86emitter/implement/jmpcall.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 61 by william, Tue Sep 7 03:24:11 2010 UTC revision 62 by william, Tue Sep 7 11:08:22 2010 UTC
# Line 22  namespace x86Emitter { Line 22  namespace x86Emitter {
22  #ifdef __GNUG__  #ifdef __GNUG__
23          // GCC has a bug that causes the templated function handler for Jmp/Call emitters to generate          // GCC has a bug that causes the templated function handler for Jmp/Call emitters to generate
24          // bad asm code.  (error is something like "7#*_uber_379s_mangled_$&02_name is already defined!")          // bad asm code.  (error is something like "7#*_uber_379s_mangled_$&02_name is already defined!")
25          // Using GCC's always_inline attribute fixes it.  This differs from __forceinline in that it          // Using GCC's always_inline attribute fixes it.  This differs from __fi in that it
26          // inlines *even in debug builds* which is (usually) undesirable.          // inlines *even in debug builds* which is (usually) undesirable.
27          //  ... except when it avoids compiler bugs.          //  ... except when it avoids compiler bugs.
28  #       define __always_inline_tmpl_fail        __attribute__((always_inline))  #       define __always_inline_tmpl_fail        __attribute__((always_inline))
# Line 38  struct xImpl_JmpCall Line 38  struct xImpl_JmpCall
38          bool    isJmp;          bool    isJmp;
39    
40          void operator()( const xRegister32& absreg ) const;          void operator()( const xRegister32& absreg ) const;
41          void operator()( const ModSib32& src ) const;          void operator()( const xIndirect32& src ) const;
42    
43          void operator()( const xRegister16& absreg ) const;          void operator()( const xRegister16& absreg ) const;
44          void operator()( const ModSib16& src ) const;          void operator()( const xIndirect16& src ) const;
45    
46          // Special form for calling functions.  This form automatically resolves the          // Special form for calling functions.  This form automatically resolves the
47          // correct displacement based on the size of the instruction being generated.          // correct displacement based on the size of the instruction being generated.
48          template< typename T > __forceinline __always_inline_tmpl_fail          template< typename T > __fi __always_inline_tmpl_fail
49          void operator()( T* func ) const          void operator()( T* func ) const
50          {          {
51                  if( isJmp )                  if( isJmp )

Legend:
Removed from v.61  
changed lines
  Added in v.62

  ViewVC Help
Powered by ViewVC 1.1.22