Skip to content

Mixin Java System Properties

Mumfrey edited this page Jun 4, 2015 · 5 revisions

The following table summaries the Java System Properties supported by Mixin to enable the various debugging and auditing features. Set any property to true to enable the option:

System Property Description
mixin.debug Enables all mixin debug options
mixin.debug.export The export debug option causes the mixin processor to emit post-mixin bytecode to disk for all mixin targets. The bytecode data are output to a typical package/class structure under the .mixin.out directory under your run directory.
mixin.debug.verify The verify option runs ASM's CheckClassAdapter on the post-mixin bytecode in order to check that mixin transformations have been applied correctly. This option is only intended for use when working on the Mixin library itself and it is not recommended to enable it during general debugging of mixins themselves.
mixin.debug.verbose The verbose option promotes all DEBUG-level logging messages generated by the mixin processor to INFO level so they are emitted to the console at runtime. This is a useful option to enabled when developing with mixins as it allows more interactive monitoring of the mixin application process.
mixin.dumpTargetOnFailure Sometimes a mixin will fail with a cryptic message such as a shadow target not being present in the target or other unexpected error which indicates the target class is not in the state expected by a particular mixin. Sometimes this may be because another transformer is mutating the bytecode in the way that the mixin transformer cannot anticipate, or other unexpected changes to the target class have happened. Enabling this option causes InvalidMixinException and other runtime mixin failures to dump the incoming (un-mixed-in) class bytecode to disk. This allows the target class bytecode to then be inspected with javap or a Java Disassembler to determine the cause of the mismatch.
mixin.checks Enables all mixin check operations
mixin.checks.interfaces

Enables Interface Implementation Audit Mode. With this mode enabled, the mixin processor will output an audit report for every mixin applied which provides a summary of which interface methods are declared by class methods but are not implemented by the class or any superclasses, in essence which methods will cause an AbstractMethodError to be thrown were they to be invoked.

The report is generated to standard error (STDERR) output and is also written to flatfiles in the .mixin.out directory under your run directory.

mixin.ignoreConstraints Disables constraint checking, demotes constraint violations from fatal errors to only output a warning. Useful in development or for in-the-wild testing of out-of-band targets.