00001
00002
00003
00004
00005 #ifndef xmog_jvm_options_inc
00006 #define xmog_jvm_options_inc
00007
00008
00009 #include "xmog.h"
00010
00011 extern "C" {
00012 typedef void (JNICALL *XMOG_ABORT)();
00013 typedef void (JNICALL *XMOG_EXIT)(jint);
00014 typedef jint (JNICALL *XMOG_VFPRINTF)(FILE*,const char*,va_list);
00015 };
00016
00025 enum xmog_jvm_verbosity
00026 {
00027 VerbosityUndefined = -1,
00028 VerbosityNone = 0,
00029 VerbosityClass=1,
00030 VerbosityGC=2,
00031 VerbosityJNI=4,
00032 VerbosityAll=7
00033 };
00034
00035
00036 #ifdef XMOG_SUPPORTS_JNI_11
00037
00043 enum xmog_bytecode_verification
00044 {
00045 VerifyUndefined = -1,
00046 VerifyNone = 0,
00047 VerifyRemote = 1,
00048 VerifyAll = 2
00049 };
00050
00051 #endif //XMOG_SUPPORTS_JNI_11
00052
00173 class XMOG_DECLSPEC xmog_jvm_options
00174 {
00175 protected:
00176
00177 xmog_jvm_options( bool bEnvOverrides = true );
00178
00179 xmog_jvm_options( const char * filename, bool bEnvOverrides = true );
00180
00181 public:
00182
00192 xmog_jvm_options( const char * filename, XMOGVERSION vers, XMOGCONFIG conf, XMOGVERSION reserved0, bool bEnvOverrides = true );
00193
00194 protected:
00195
00196 xmog_jvm_options( XMOGVERSION vers, XMOGCONFIG conf, XMOGVERSION reserved0, bool bEnvOverrides = true );
00197
00198 xmog_jvm_options( int argc, char * argv[], bool bEnvOverrides = true );
00199
00200 public:
00201
00202 virtual ~xmog_jvm_options();
00203
00220 virtual void * getInitArgs( jint jniVersion );
00221
00244 virtual int readJvmOptions( const char * file, XMOGVERSION vers = NULL, XMOGCONFIG conf = NULL, XMOGVERSION reserved0 = NULL );
00245
00252 virtual void reset();
00253
00259 virtual void setJniVersion( jint version );
00260
00266 virtual void setJniVersion( const char * version );
00267
00273 virtual jint getJniVersion();
00274
00282 virtual void setIgnoreUnrecognized( bool ignore );
00283
00292 virtual void setIgnoreUnrecognized( const char * ignore );
00293
00298 virtual bool getIgnoreUnrecognized();
00299
00308 virtual void setStackSizeInKB( jint ss );
00309
00318 virtual void setStackSize( const char * ss );
00319
00323 virtual jint getStackSizeInKB();
00324
00333 virtual void setInitialHeapSizeInMB( jint ihs );
00334
00348 virtual void setInitialHeapSize( const char * ihs );
00349
00353 virtual jint getInitialHeapSizeInMB();
00354
00363 virtual void setMaximumHeapSizeInMB( jint mhs );
00364
00380 virtual void setMaximumHeapSize( const char * mhs );
00381
00385 virtual jint getMaximumHeapSizeInMB();
00386
00395 virtual void setDashDOption( const char * name, const char * value = 0 );
00396
00403 virtual char * getDashDOption( const char * name );
00404
00410 virtual void removeDashDOption( const char * name );
00411
00424 virtual void setDashXOption( const char * name, const char * value = 0 );
00425
00432 virtual char * getDashXOption( const char * name );
00433
00439 virtual void removeDashXOption( const char * name );
00440
00447 virtual void setOtherOption( const char * namevalue, void * ptr = 0 );
00448
00454 virtual void * getOtherOption( const char * name );
00455
00464 virtual void removeOtherOption( const char * name );
00465
00477 virtual void setClassPath( const char * cp );
00478
00484 virtual void appendToClassPath( const char * cp );
00485
00495 virtual void prependToClassPath( const char * cp );
00496
00500 virtual char * getClassPath();
00501
00513 virtual void setLibraryPath( const char * lp );
00514
00520 virtual void appendToLibraryPath( const char * lp );
00521
00525 virtual char * getLibraryPath();
00526
00539 virtual void setExtensionsDirectories( const char * ed );
00540
00546 virtual void appendToExtensionsDirectories( const char * ed );
00547
00551 virtual char * getExtensionsDirectories();
00552
00563 virtual void setSecurityManager( const char * sm );
00564
00568 virtual char * getSecurityManager();
00569
00579 virtual void setSecurityPolicy( const char * policyFile );
00580
00584 virtual char * getSecurityPolicy();
00585
00592 virtual void setVfprintf( XMOG_VFPRINTF vfp );
00593
00600 virtual void setVfprintf( const char * vfp );
00601
00606 virtual XMOG_VFPRINTF getVfprintf();
00607
00614 virtual void setExit( XMOG_EXIT ex );
00615
00622 virtual void setExit( const char * ex );
00623
00627 virtual XMOG_EXIT getExit();
00628
00635 virtual void setAbort( XMOG_ABORT ab );
00636
00643 virtual void setAbort( const char * ab );
00644
00648 virtual XMOG_ABORT getAbort();
00649
00655 virtual void setDisableClassGC( bool dcgc );
00656
00662 virtual void setDisableClassGC( const char * dcgc );
00663
00669 virtual bool getDisableClassGC();
00670
00676 virtual void setEnableClassGC( bool ecgc );
00677
00683 virtual void setEnableClassGC( const char * ecgc );
00684
00690 virtual bool getEnableClassGC();
00691
00692 virtual void setEnableVerboseGC( bool evgc );
00693
00694 virtual void setEnableVerboseGC( const char * evgc );
00695
00696 virtual bool getEnableVerboseGC();
00697
00698 virtual void setEnabledAssertions( const char * ea );
00699
00700 virtual void appendToEnabledAssertions( const char * ea );
00701
00702 virtual char * getEnabledAssertions();
00703
00704 virtual void setDisabledAssertions( const char * da );
00705
00706 virtual void appendToDisabledAssertions( const char * da );
00707
00708 virtual char * getDisabledAssertions();
00709
00710 virtual void setEnableSystemAssertions( bool esa );
00711
00712 virtual void setEnableSystemAssertions( const char * esa );
00713
00714 virtual bool getEnableSystemAssertions();
00715
00716 virtual void setDisableSystemAssertions( bool dsa );
00717
00718 virtual void setDisableSystemAssertions( const char * dsa );
00719
00720 virtual bool getDisableSystemAssertions();
00721
00722 virtual void setVerbosity( int v );
00723
00724 virtual void setVerbosity( const char * v );
00725
00726 virtual void setVerbosity( xmog_jvm_verbosity v );
00727
00733 virtual xmog_jvm_verbosity getVerbosity();
00734
00740 virtual void setMixedMode( bool m );
00741
00747 virtual void setMixedMode( const char * m );
00748
00754 virtual bool getMixedMode();
00755
00761 virtual void setInterpretedMode( bool i );
00762
00768 virtual void setInterpretedMode( const char * i );
00769
00775 virtual bool getInterpretedMode();
00776
00782 virtual void setAppendBootClassPath( const char * cp );
00783
00789 virtual void appendToAppendBootClassPath( const char * cp );
00790
00796 virtual char * getAppendBootClassPath();
00797
00803 virtual void setPrependBootClassPath( const char * cp );
00804
00810 virtual void appendToPrependBootClassPath( const char * cp );
00811
00817 virtual char * getPrependBootClassPath();
00818
00824 virtual void setBootClassPath( const char * cp );
00825
00831 virtual void appendToBootClassPath( const char * cp );
00832
00838 virtual char * getBootClassPath();
00839
00847 virtual void setIncrementalGC( bool i );
00848
00856 virtual void setIncrementalGC( const char * i );
00857
00865 virtual bool getIncrementalGC();
00866
00876 virtual void setLogGCFile( const char * file );
00877
00886 virtual char * getLogGCFile();
00887
00893 virtual void setBatchMode( bool b );
00894
00900 virtual void setBatchMode( const char * b );
00901
00905 virtual bool getBatchMode();
00906
00912 virtual void setProf( bool p );
00913
00919 virtual void setProf( const char * p );
00920
00924 virtual bool getProf();
00925
00931 virtual void setRun( const char * runopts );
00932
00936 virtual char * getRun();
00937
00943 virtual void setDebug( bool d );
00944
00950 virtual void setDebug( const char * d );
00951
00955 virtual bool getDebug();
00956
00962 virtual void setNoagent( bool na );
00963
00969 virtual void setNoagent( const char * na );
00970
00974 virtual bool getNoagent();
00975
00984 virtual void setReduceSignals( bool rs );
00985
00994 virtual void setReduceSignals( const char * rs );
00995
00999 virtual bool getReduceSignals();
01000
01010 virtual void setCheckJni( bool cjni );
01011
01021 virtual void setCheckJni( const char * cjni );
01022
01026 virtual bool getCheckJni();
01027
01033 virtual void setFuture( bool future );
01034
01040 virtual void setFuture( const char * future );
01041
01045 virtual bool getFuture();
01046
01047 #if (XMOG_SUPPORTS_JNI_11==1)
01048
01049 virtual void mergeWithDefaults( JDK1_1InitArgs & iargs11 );
01050
01051 virtual void setCheckSource( bool cs );
01052
01053 virtual bool getCheckSource();
01054
01055 virtual void setNativeStackSizeInKB( jint nss );
01056
01057 virtual jint getNativeStackSizeInKB();
01058
01059 virtual void setVerifyMode( xmog_bytecode_verification ver );
01060
01061 virtual xmog_bytecode_verification getVerifyMode();
01062
01063 virtual void setDisableAsyncGC( bool dagc );
01064
01065 virtual bool getDisableAsyncGC();
01066
01067 #endif //XMOG_SUPPORTS_JNI_11
01068
01069 protected:
01070
01071 void env_override();
01072
01073 private:
01074
01075
01076
01077 JavaVMInitArgs iargs_12;
01078
01079 int iargs_12_alloc;
01080
01081 void init();
01082
01083 bool envOverrides;
01084
01085 int readJvmOptionsFromRegistry( XMOGVERSION vers, XMOGCONFIG conf, XMOGVERSION reserved0 );
01086
01087 int readJvmOptionsInJunction20Format( const char * file, XMOGVERSION vers, XMOGCONFIG conf, XMOGVERSION reserved0 );
01088
01089 int readJvmOptionsInXmlFormat( const char * file );
01090
01091 JavaVMOption * find12Option( const char * prefix, const char * name, size_t combined_length = 0 );
01092
01093 void add12Option( const char * prefix, const char * name, char sep, const char * value = 0, void * extra = 0 );
01094
01095 void remove12Option( const char * prefix, const char * name );
01096
01097 void append12Option( const char * prefix, const char * name, char sep, const char * value );
01098
01099 void setVerbosity_( const char * verbosity );
01100
01101 # ifdef XMOG_SUPPORTS_JNI_11
01102
01103 int iargs_11_alloc;
01104
01105 int iargs_11_used;
01106
01107 JDK1_1InitArgs iargs_11;
01108
01109 unsigned iargs_11_modified;
01110
01111 void appendString( char ** ptr, char sep, const char * str );
01112
01113 char ** find11Option( const char * name, size_t length = 0 );
01114
01115 void add11Option( const char * name, const char * value = 0 );
01116
01117 void remove11Option( const char * name );
01118
01119 # endif //XMOG_SUPPORTS_JNI_11
01120
01121 };
01122
01123
01124
01125 #endif