+ assert() support for the JVM target (currently ignores the Java classloader

assertionStatus setting)

git-svn-id: branches/jvmbackend@20388 -
This commit is contained in:
Jonas Maebe 2012-02-20 11:28:59 +00:00
parent 3916a32f9e
commit 85ef5e109c
16 changed files with 168 additions and 204 deletions

1
.gitattributes vendored
View File

@ -9782,6 +9782,7 @@ tests/test/jvm/taddset.pp svneol=native#text/plain
tests/test/jvm/taddsetint.pp svneol=native#text/plain
tests/test/jvm/tarray2.pp svneol=native#text/plain
tests/test/jvm/tarray3.pp svneol=native#text/plain
tests/test/jvm/tassert.pp svneol=native#text/plain
tests/test/jvm/tbyte.pp svneol=native#text/plain
tests/test/jvm/tbytearrres.pp svneol=native#text/plain
tests/test/jvm/tclassproptest.pp svneol=native#text/plain

View File

@ -39,6 +39,8 @@ interface
function first_copy: tnode; override;
function first_assigned: tnode; override;
function first_assert: tnode; override;
function first_box: tnode; override;
function first_unbox: tnode; override;
@ -71,11 +73,11 @@ interface
implementation
uses
cutils,globals,verbose,globtype,constexp,
cutils,globals,verbose,globtype,constexp,fmodule,
aasmbase,aasmtai,aasmdata,aasmcpu,
symtype,symconst,symdef,symsym,symtable,jvmdef,
defutil,
nadd,nbas,ncon,ncnv,nmem,ncal,nld,nflw,nutils,
nadd,nbas,ncon,ncnv,nmat,nmem,ncal,nld,nflw,nutils,
cgbase,pass_1,pass_2,
cpuinfo,ncgutil,
cgutils,hlcgobj,hlcgcpu;
@ -241,6 +243,20 @@ implementation
end;
function tjvminlinenode.first_assert: tnode;
var
paras: tcallparanode;
begin
paras:=tcallparanode(tcallparanode(left).right);
paras:=ccallparanode.create(cstringconstnode.createstr(current_module.sourcefiles.get_file_name(current_filepos.fileindex)),paras);
paras:=ccallparanode.create(genintconstnode(fileinfo.line),paras);
result:=cifnode.create(cnotnode.create(tcallparanode(left).left),
ccallnode.createintern('fpc_assert',paras),nil);
tcallparanode(left).left:=nil;
tcallparanode(left).right:=nil;
end;
function tjvminlinenode.first_box: tnode;
var
boxdef,

View File

@ -76,6 +76,7 @@ interface
function first_box: tnode; virtual; abstract;
function first_unbox: tnode; virtual; abstract;
function first_assigned: tnode; virtual;
function first_assert: tnode; virtual;
private
function handle_str: tnode;
@ -3249,7 +3250,7 @@ implementation
in_assert_x_y :
begin
expectloc:=LOC_VOID;
result := first_assert;
end;
in_low_x,
@ -3619,6 +3620,13 @@ implementation
expectloc := LOC_JUMP;
end;
function tinlinenode.first_assert: tnode;
begin
expectloc:=LOC_VOID;
end;
function tinlinenode.handle_box: tnode;
begin
result:=nil;

View File

@ -21296,18 +21296,6 @@
constructor create(para1: JLThrowable); overload;
end;
JLAssertionError = class external 'java.lang' name 'AssertionError' (JLError)
public
constructor create(); overload;
constructor create(para1: JLObject); overload;
constructor create(para1: jboolean); overload;
constructor create(para1: jchar); overload;
constructor create(para1: jint); overload;
constructor create(para1: jlong); overload;
constructor create(para1: jfloat); overload;
constructor create(para1: jdouble); overload;
end;
JLThreadDeath = class external 'java.lang' name 'ThreadDeath' (JLError)
public
constructor create(); overload;

View File

@ -8865,11 +8865,6 @@ type
Arr2JNURISyntaxException = array of Arr1JNURISyntaxException;
Arr3JNURISyntaxException = array of Arr2JNURISyntaxException;
JLAssertionError = class;
Arr1JLAssertionError = array of JLAssertionError;
Arr2JLAssertionError = array of Arr1JLAssertionError;
Arr3JLAssertionError = array of Arr2JLAssertionError;
OAHCMHttpPost = class;
Arr1OAHCMHttpPost = array of OAHCMHttpPost;
Arr2OAHCMHttpPost = array of Arr1OAHCMHttpPost;

View File

@ -2343,3 +2343,15 @@
function getCharsetName(): JLString; overload; virtual;
end;
JLAssertionError = class external 'java.lang' name 'AssertionError' (JLError)
public
constructor create(); overload;
constructor create(para1: JLObject); overload;
constructor create(para1: jboolean); overload;
constructor create(para1: jchar); overload;
constructor create(para1: jint); overload;
constructor create(para1: jlong); overload;
constructor create(para1: jfloat); overload;
constructor create(para1: jdouble); overload;
end;

View File

@ -1,4 +1,4 @@
{ Imports for Java packages/classes: java.io.IIOException, java.io.IOException, java.io.Serializable, java.lang.AbstractStringBuilder, java.lang.Appendable, java.lang.Boolean, java.lang.Byte, java.lang.CharSequence, java.lang.Character, java.lang.Class, java.lang.Cloneable, java.lang.Comparable, java.lang.Double, java.lang.Enum, java.lang.Error, java.lang.Exception, java.lang.Float, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.IndexOutOfBoundsException, java.lang.Integer, java.lang.Iterable, java.lang.LinkageError, java.lang.Long, java.lang.Math, java.lang.NoSuchMethodException, java.lang.Number, java.lang.Object, java.lang.Readable, java.lang.Runtime, java.lang.RuntimeException, java.lang.Short, java.lang.String, java.lang.StringBuffer, java.lang.StringBuilder, java.lang.System, java.lang.ThreadLocal, java.lang.Throwable, java.lang.UnsupportedOperationException, java.lang.reflect.AccessibleObject, java.lang.reflect.AnnotatedElement, java.lang.reflect.Array, java.lang.reflect.Field, java.lang.reflect.GenericDeclaration, java.lang.reflect.InvocationTargetException, java.lang.reflect.Member, java.lang.reflect.Method, java.lang.reflect.Type, java.math.BigInteger, java.nio.Buffer, java.nio.ByteBuffer, java.nio.CharBuffer, java.nio.charset., java.text.Collator, java.util.AbstractCollection, java.util.AbstractMap, java.util.AbstractSet, java.util.Arrays, java.util.BitSet, java.util.Calendar, java.util.Collection, java.util.Comparator, java.util.EnumSet, java.util.HashMap, java.util.Iterator, java.util.Map, java.util.Set }
{ Imports for Java packages/classes: java.io.IIOException, java.io.IOException, java.io.Serializable, java.lang.AbstractStringBuilder, java.lang.Appendable, java.lang.Boolean, java.lang.Byte, java.lang.CharSequence, java.lang.Character, java.lang.Class, java.lang.Cloneable, java.lang.Comparable, java.lang.Double, java.lang.Enum, java.lang.Error, java.lang.Exception, java.lang.Float, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.IndexOutOfBoundsException, java.lang.Integer, java.lang.Iterable, java.lang.LinkageError, java.lang.Long, java.lang.Math, java.lang.NoSuchMethodException, java.lang.Number, java.lang.Object, java.lang.Readable, java.lang.Runtime, java.lang.RuntimeException, java.lang.Short, java.lang.String, java.lang.StringBuffer, java.lang.StringBuilder, java.lang.System, java.lang.ThreadLocal, java.lang.Throwable, java.lang.UnsupportedOperationException, java.lang.reflect.AccessibleObject, java.lang.reflect.AnnotatedElement, java.lang.reflect.Array, java.lang.reflect.Field, java.lang.reflect.GenericDeclaration, java.lang.reflect.InvocationTargetException, java.lang.reflect.Member, java.lang.reflect.Method, java.lang.reflect.Type, java.lang.AssertionError, java.math.BigInteger, java.nio.Buffer, java.nio.ByteBuffer, java.nio.CharBuffer, java.nio.charset., java.text.Collator, java.util.AbstractCollection, java.util.AbstractMap, java.util.AbstractSet, java.util.Arrays, java.util.BitSet, java.util.Calendar, java.util.Collection, java.util.Comparator, java.util.EnumSet, java.util.HashMap, java.util.Iterator, java.util.Map, java.util.Set }
type
JLNoSuchMethodException = class;
Arr1JLNoSuchMethodException = array of JLNoSuchMethodException;
@ -545,4 +545,8 @@ type
Arr2JUSortedMap = array of Arr1JUSortedMap;
Arr3JUSortedMap = array of Arr2JUSortedMap;
JLAssertionError = class;
Arr1JLAssertionError = array of JLAssertionError;
Arr2JLAssertionError = array of Arr1JLAssertionError;
Arr3JLAssertionError = array of Arr2JLAssertionError;

View File

@ -1472,18 +1472,18 @@
JLClass = class sealed external 'java.lang' name 'Class' (JLObject, JISerializable, JLRGenericDeclaration, JLRType, JLRAnnotatedElement)
public
type
InnerMethodArray = class;
Arr1InnerMethodArray = array of InnerMethodArray;
Arr2InnerMethodArray = array of Arr1InnerMethodArray;
Arr3InnerMethodArray = array of Arr2InnerMethodArray;
InnerEnclosingMethodInfo = class;
Arr1InnerEnclosingMethodInfo = array of InnerEnclosingMethodInfo;
Arr2InnerEnclosingMethodInfo = array of Arr1InnerEnclosingMethodInfo;
Arr3InnerEnclosingMethodInfo = array of Arr2InnerEnclosingMethodInfo;
InnerMethodArray = class external 'java.lang' name 'MethodArray'
InnerMethodArray = class;
Arr1InnerMethodArray = array of InnerMethodArray;
Arr2InnerMethodArray = array of Arr1InnerMethodArray;
Arr3InnerMethodArray = array of Arr2InnerMethodArray;
InnerEnclosingMethodInfo = class sealed external 'java.lang' name 'EnclosingMethodInfo'
end;
InnerEnclosingMethodInfo = class sealed external 'java.lang' name 'EnclosingMethodInfo'
InnerMethodArray = class external 'java.lang' name 'MethodArray'
end;
public
@ -1711,15 +1711,15 @@
JUAbstractMap = class abstract external 'java.util' name 'AbstractMap' (JLObject, JUMap)
public
type
InnerSimpleImmutableEntry = class;
Arr1InnerSimpleImmutableEntry = array of InnerSimpleImmutableEntry;
Arr2InnerSimpleImmutableEntry = array of Arr1InnerSimpleImmutableEntry;
Arr3InnerSimpleImmutableEntry = array of Arr2InnerSimpleImmutableEntry;
InnerSimpleEntry = class;
Arr1InnerSimpleEntry = array of InnerSimpleEntry;
Arr2InnerSimpleEntry = array of Arr1InnerSimpleEntry;
Arr3InnerSimpleEntry = array of Arr2InnerSimpleEntry;
InnerSimpleImmutableEntry = class external 'java.util' name 'SimpleImmutableEntry' (JLObject, JUMap.InnerEntry, JISerializable)
InnerSimpleImmutableEntry = class;
Arr1InnerSimpleImmutableEntry = array of InnerSimpleImmutableEntry;
Arr2InnerSimpleImmutableEntry = array of Arr1InnerSimpleImmutableEntry;
Arr3InnerSimpleImmutableEntry = array of Arr2InnerSimpleImmutableEntry;
InnerSimpleEntry = class external 'java.util' name 'SimpleEntry' (JLObject, JUMap.InnerEntry, JISerializable)
public
constructor create(para1: JLObject; para2: JLObject); overload;
constructor create(para1: JUMap.InnerEntry); overload;
@ -1731,7 +1731,7 @@
function toString(): JLString; overload; virtual;
end;
InnerSimpleEntry = class external 'java.util' name 'SimpleEntry' (JLObject, JUMap.InnerEntry, JISerializable)
InnerSimpleImmutableEntry = class external 'java.util' name 'SimpleImmutableEntry' (JLObject, JUMap.InnerEntry, JISerializable)
public
constructor create(para1: JLObject; para2: JLObject); overload;
constructor create(para1: JUMap.InnerEntry); overload;
@ -2139,16 +2139,6 @@
constructor create(para1: JLThrowable); overload;
end;
JLRInvocationTargetException = class external 'java.lang.reflect' name 'InvocationTargetException' (JLException)
strict protected
constructor create(); overload;
public
constructor create(para1: JLThrowable); overload;
constructor create(para1: JLThrowable; para2: JLString); overload;
function getTargetException(): JLThrowable; overload; virtual;
function getCause(): JLThrowable; overload; virtual;
end;
JLStringBuffer = class sealed external 'java.lang' name 'StringBuffer' (JLAbstractStringBuilder, JISerializable, JLCharSequence)
public
constructor create(); overload;
@ -2454,18 +2444,14 @@
JUHashMap = class external 'java.util' name 'HashMap' (JUAbstractMap, JUMap, JLCloneable, JISerializable)
public
type
InnerEntrySet = class;
Arr1InnerEntrySet = array of InnerEntrySet;
Arr2InnerEntrySet = array of Arr1InnerEntrySet;
Arr3InnerEntrySet = array of Arr2InnerEntrySet;
InnerKeySet = class;
Arr1InnerKeySet = array of InnerKeySet;
Arr2InnerKeySet = array of Arr1InnerKeySet;
Arr3InnerKeySet = array of Arr2InnerKeySet;
InnerValues = class;
Arr1InnerValues = array of InnerValues;
Arr2InnerValues = array of Arr1InnerValues;
Arr3InnerValues = array of Arr2InnerValues;
InnerEntry = class;
Arr1InnerEntry = array of InnerEntry;
Arr2InnerEntry = array of Arr1InnerEntry;
Arr3InnerEntry = array of Arr2InnerEntry;
InnerEntryIterator = class;
Arr1InnerEntryIterator = array of InnerEntryIterator;
Arr2InnerEntryIterator = array of Arr1InnerEntryIterator;
Arr3InnerEntryIterator = array of Arr2InnerEntryIterator;
InnerKeyIterator = class;
Arr1InnerKeyIterator = array of InnerKeyIterator;
Arr2InnerKeyIterator = array of Arr1InnerKeyIterator;
@ -2474,25 +2460,26 @@
Arr1InnerValueIterator = array of InnerValueIterator;
Arr2InnerValueIterator = array of Arr1InnerValueIterator;
Arr3InnerValueIterator = array of Arr2InnerValueIterator;
InnerEntryIterator = class;
Arr1InnerEntryIterator = array of InnerEntryIterator;
Arr2InnerEntryIterator = array of Arr1InnerEntryIterator;
Arr3InnerEntryIterator = array of Arr2InnerEntryIterator;
InnerEntry = class;
Arr1InnerEntry = array of InnerEntry;
Arr2InnerEntry = array of Arr1InnerEntry;
Arr3InnerEntry = array of Arr2InnerEntry;
InnerEntrySet = class;
Arr1InnerEntrySet = array of InnerEntrySet;
Arr2InnerEntrySet = array of Arr1InnerEntrySet;
Arr3InnerEntrySet = array of Arr2InnerEntrySet;
InnerKeySet = class;
Arr1InnerKeySet = array of InnerKeySet;
Arr2InnerKeySet = array of Arr1InnerKeySet;
Arr3InnerKeySet = array of Arr2InnerKeySet;
InnerHashIterator = class;
Arr1InnerHashIterator = array of InnerHashIterator;
Arr2InnerHashIterator = array of Arr1InnerHashIterator;
Arr3InnerHashIterator = array of Arr2InnerHashIterator;
InnerEntrySet = class sealed external 'java.util' name 'EntrySet'
InnerValues = class;
Arr1InnerValues = array of InnerValues;
Arr2InnerValues = array of Arr1InnerValues;
Arr3InnerValues = array of Arr2InnerValues;
InnerEntry = class external 'java.util' name 'Entry'
end;
InnerKeySet = class sealed external 'java.util' name 'KeySet'
end;
InnerValues = class sealed external 'java.util' name 'Values'
InnerEntryIterator = class sealed external 'java.util' name 'EntryIterator'
end;
InnerKeyIterator = class sealed external 'java.util' name 'KeyIterator'
@ -2501,15 +2488,18 @@
InnerValueIterator = class sealed external 'java.util' name 'ValueIterator'
end;
InnerEntryIterator = class sealed external 'java.util' name 'EntryIterator'
InnerEntrySet = class sealed external 'java.util' name 'EntrySet'
end;
InnerEntry = class external 'java.util' name 'Entry'
InnerKeySet = class sealed external 'java.util' name 'KeySet'
end;
InnerHashIterator = class abstract external 'java.util' name 'HashIterator'
end;
InnerValues = class sealed external 'java.util' name 'Values'
end;
public
constructor create(para1: jint; para2: jfloat); overload;
constructor create(para1: jint); overload;
@ -2530,6 +2520,18 @@
function entrySet(): JUSet; overload; virtual;
end;
JLAssertionError = class external 'java.lang' name 'AssertionError' (JLError)
public
constructor create(); overload;
constructor create(para1: JLObject); overload;
constructor create(para1: jboolean); overload;
constructor create(para1: jchar); overload;
constructor create(para1: jint); overload;
constructor create(para1: jlong); overload;
constructor create(para1: jfloat); overload;
constructor create(para1: jdouble); overload;
end;
JLLinkageError = class external 'java.lang' name 'LinkageError' (JLError)
public
constructor create(); overload;
@ -2563,6 +2565,16 @@
constructor create(para1: JLThrowable); overload;
end;
JLRInvocationTargetException = class external 'java.lang.reflect' name 'InvocationTargetException' (JLException)
strict protected
constructor create(); overload;
public
constructor create(para1: JLThrowable); overload;
constructor create(para1: JLThrowable; para2: JLString); overload;
function getTargetException(): JLThrowable; overload; virtual;
function getCause(): JLThrowable; overload; virtual;
end;
JUAbstractSet = class abstract external 'java.util' name 'AbstractSet' (JUAbstractCollection, JUSet)
strict protected
constructor create(); overload;

View File

@ -1,4 +1,4 @@
{ Imports for Java packages/classes: java.io.IIOException, java.io.IOException, java.io.Serializable, java.lang.AbstractStringBuilder, java.lang.Appendable, java.lang.Boolean, java.lang.Byte, java.lang.CharSequence, java.lang.Character, java.lang.Class, java.lang.Cloneable, java.lang.Comparable, java.lang.Double, java.lang.Enum, java.lang.Error, java.lang.Exception, java.lang.Float, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.IndexOutOfBoundsException, java.lang.Integer, java.lang.Iterable, java.lang.LinkageError, java.lang.Long, java.lang.Math, java.lang.NoSuchMethodException, java.lang.Number, java.lang.Object, java.lang.Readable, java.lang.Runtime, java.lang.RuntimeException, java.lang.Short, java.lang.String, java.lang.StringBuffer, java.lang.StringBuilder, java.lang.System, java.lang.ThreadLocal, java.lang.Throwable, java.lang.UnsupportedOperationException, java.lang.reflect.AccessibleObject, java.lang.reflect.AnnotatedElement, java.lang.reflect.Array, java.lang.reflect.Field, java.lang.reflect.GenericDeclaration, java.lang.reflect.Member, java.lang.reflect.Method, java.lang.reflect.Type, java.math.BigInteger, java.nio.Buffer, java.nio.ByteBuffer, java.nio.CharBuffer, java.nio.charset., java.text.Collator, java.util.AbstractCollection, java.util.AbstractMap, java.util.AbstractSet, java.util.Arrays, java.util.BitSet, java.util.Calendar, java.util.Collection, java.util.Comparator, java.util.EnumSet, java.util.HashMap, java.util.Iterator, java.util.Map, java.util.Set }
{ Imports for Java packages/classes: java.io.IIOException, java.io.IOException, java.io.Serializable, java.lang.AbstractStringBuilder, java.lang.Appendable, java.lang.AssertionError, java.lang.Boolean, java.lang.Byte, java.lang.CharSequence, java.lang.Character, java.lang.Class, java.lang.Cloneable, java.lang.Comparable, java.lang.Double, java.lang.Enum, java.lang.Error, java.lang.Exception, java.lang.Float, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.IndexOutOfBoundsException, java.lang.Integer, java.lang.Iterable, java.lang.LinkageError, java.lang.Long, java.lang.Math, java.lang.NoSuchMethodException, java.lang.Number, java.lang.Object, java.lang.Readable, java.lang.Runtime, java.lang.RuntimeException, java.lang.Short, java.lang.String, java.lang.StringBuffer, java.lang.StringBuilder, java.lang.System, java.lang.ThreadLocal, java.lang.Throwable, java.lang.UnsupportedOperationException, java.lang.reflect.AccessibleObject, java.lang.reflect.AnnotatedElement, java.lang.reflect.Array, java.lang.reflect.Field, java.lang.reflect.GenericDeclaration, java.lang.reflect.InvocationTargetException, java.lang.reflect.Member, java.lang.reflect.Method, java.lang.reflect.Type, java.math.BigInteger, java.nio.Buffer, java.nio.ByteBuffer, java.nio.CharBuffer, java.nio.charset., java.text.Collator, java.util.AbstractCollection, java.util.AbstractMap, java.util.AbstractSet, java.util.Arrays, java.util.BitSet, java.util.Calendar, java.util.Collection, java.util.Comparator, java.util.EnumSet, java.util.HashMap, java.util.Iterator, java.util.Map, java.util.Set }
type
JLNoSuchMethodException = class;
Arr1JLNoSuchMethodException = array of JLNoSuchMethodException;
@ -20,6 +20,11 @@ type
Arr2JLAbstractStringBuilder = array of Arr1JLAbstractStringBuilder;
Arr3JLAbstractStringBuilder = array of Arr2JLAbstractStringBuilder;
JLRInvocationTargetException = class;
Arr1JLRInvocationTargetException = array of JLRInvocationTargetException;
Arr2JLRInvocationTargetException = array of Arr1JLRInvocationTargetException;
Arr3JLRInvocationTargetException = array of Arr2JLRInvocationTargetException;
JLError = class;
Arr1JLError = array of JLError;
Arr2JLError = array of Arr1JLError;
@ -30,11 +35,6 @@ type
Arr2JLRField = array of Arr1JLRField;
Arr3JLRField = array of Arr2JLRField;
JLRInvocationTargetException = class;
Arr1JLRInvocationTargetException = array of JLRInvocationTargetException;
Arr2JLRInvocationTargetException = array of Arr1JLRInvocationTargetException;
Arr3JLRInvocationTargetException = array of Arr2JLRInvocationTargetException;
JNBuffer = class;
Arr1JNBuffer = array of JNBuffer;
Arr2JNBuffer = array of Arr1JNBuffer;
@ -305,6 +305,11 @@ type
Arr2JLSystem = array of Arr1JLSystem;
Arr3JLSystem = array of Arr2JLSystem;
JLAssertionError = class;
Arr1JLAssertionError = array of JLAssertionError;
Arr2JLAssertionError = array of Arr1JLAssertionError;
Arr3JLAssertionError = array of Arr2JLAssertionError;
JLIterable = interface;
Arr1JLIterable = array of JLIterable;
Arr2JLIterable = array of Arr1JLIterable;

View File

@ -723,8 +723,8 @@ Procedure fpc_HandleError (Errno : longint); compilerproc;
}
procedure fpc_AbstractErrorIntern;compilerproc;
procedure fpc_assert(Const Msg,FName:Shortstring;LineNo:Longint;ErrorAddr:Pointer); compilerproc;
*)
procedure fpc_assert(Const Msg,FName:unicodestring;LineNo:Longint{;ErrorAddr:Pointer}); compilerproc;
{$ifdef FPC_HAS_FEATURE_FILEIO}
Procedure fpc_reset_typed(var f : TypedFile;Size : Longint); compilerproc;

View File

@ -5019,6 +5019,10 @@
Arr1InnerLogNode = array of InnerLogNode;
Arr2InnerLogNode = array of Arr1InnerLogNode;
Arr3InnerLogNode = array of Arr2InnerLogNode;
InnerLoggerWeakRef = class;
Arr1InnerLoggerWeakRef = array of InnerLoggerWeakRef;
Arr2InnerLoggerWeakRef = array of Arr1InnerLoggerWeakRef;
Arr3InnerLoggerWeakRef = array of Arr2InnerLoggerWeakRef;
InnerRootLogger = class;
Arr1InnerRootLogger = array of InnerRootLogger;
Arr2InnerRootLogger = array of Arr1InnerRootLogger;
@ -5029,6 +5033,9 @@
InnerLogNode = class external 'java.util.logging' name 'LogNode'
end;
InnerLoggerWeakRef = class sealed external 'java.util.logging' name 'LoggerWeakRef'
end;
InnerRootLogger = class external 'java.util.logging' name 'RootLogger'
end;
@ -9044,6 +9051,10 @@
Arr1InnerDisplayChangedRunnable = array of InnerDisplayChangedRunnable;
Arr2InnerDisplayChangedRunnable = array of Arr1InnerDisplayChangedRunnable;
Arr3InnerDisplayChangedRunnable = array of Arr2InnerDisplayChangedRunnable;
InnerProcessingRunnable = class;
Arr1InnerProcessingRunnable = array of InnerProcessingRunnable;
Arr2InnerProcessingRunnable = array of Arr1InnerProcessingRunnable;
Arr3InnerProcessingRunnable = array of Arr2InnerProcessingRunnable;
InnerDoubleBufferInfo = class external 'javax.swing' name 'DoubleBufferInfo'
end;
@ -9056,6 +9067,9 @@
InnerDisplayChangedRunnable = class sealed external 'javax.swing' name 'DisplayChangedRunnable'
end;
InnerProcessingRunnable = class sealed external 'javax.swing' name 'ProcessingRunnable'
end;
public
class function currentManager(para1: JAComponent): JSRepaintManager; static; overload;
class function currentManager(para1: JSJComponent): JSRepaintManager; static; overload;
@ -9320,60 +9334,6 @@
JSSwingHeavyWeight = interface external 'javax.swing' name 'SwingHeavyWeight'
end;
JSSystemEventQueueUtilities = class external 'javax.swing' name 'SystemEventQueueUtilities' (JLObject)
public
type
InnerSystemEventQueue = class;
Arr1InnerSystemEventQueue = array of InnerSystemEventQueue;
Arr2InnerSystemEventQueue = array of Arr1InnerSystemEventQueue;
Arr3InnerSystemEventQueue = array of Arr2InnerSystemEventQueue;
InnerComponentWorkRequest = class;
Arr1InnerComponentWorkRequest = array of InnerComponentWorkRequest;
Arr2InnerComponentWorkRequest = array of Arr1InnerComponentWorkRequest;
Arr3InnerComponentWorkRequest = array of Arr2InnerComponentWorkRequest;
InnerTimerQueueRestart = class;
Arr1InnerTimerQueueRestart = array of InnerTimerQueueRestart;
Arr2InnerTimerQueueRestart = array of Arr1InnerTimerQueueRestart;
Arr3InnerTimerQueueRestart = array of Arr2InnerTimerQueueRestart;
InnerRunnableCanvas = class;
Arr1InnerRunnableCanvas = array of InnerRunnableCanvas;
Arr2InnerRunnableCanvas = array of Arr1InnerRunnableCanvas;
Arr3InnerRunnableCanvas = array of Arr2InnerRunnableCanvas;
InnerRunnableCanvasGraphics = class;
Arr1InnerRunnableCanvasGraphics = array of InnerRunnableCanvasGraphics;
Arr2InnerRunnableCanvasGraphics = array of Arr1InnerRunnableCanvasGraphics;
Arr3InnerRunnableCanvasGraphics = array of Arr2InnerRunnableCanvasGraphics;
InnerRunnableEvent = class;
Arr1InnerRunnableEvent = array of InnerRunnableEvent;
Arr2InnerRunnableEvent = array of Arr1InnerRunnableEvent;
Arr3InnerRunnableEvent = array of Arr2InnerRunnableEvent;
InnerRunnableTarget = class;
Arr1InnerRunnableTarget = array of InnerRunnableTarget;
Arr2InnerRunnableTarget = array of Arr1InnerRunnableTarget;
Arr3InnerRunnableTarget = array of Arr2InnerRunnableTarget;
InnerSystemEventQueue = class external 'javax.swing' name 'SystemEventQueue'
end;
InnerComponentWorkRequest = class external 'javax.swing' name 'ComponentWorkRequest'
end;
InnerTimerQueueRestart = class external 'javax.swing' name 'TimerQueueRestart'
end;
InnerRunnableCanvas = class external 'javax.swing' name 'RunnableCanvas'
end;
InnerRunnableCanvasGraphics = class external 'javax.swing' name 'RunnableCanvasGraphics'
end;
InnerRunnableEvent = class external 'javax.swing' name 'RunnableEvent'
end;
InnerRunnableTarget = class external 'javax.swing' name 'RunnableTarget'
end;
end;
JSWindowConstants = interface external 'javax.swing' name 'WindowConstants'
const
DO_NOTHING_ON_CLOSE = 0;
@ -15741,18 +15701,6 @@
constructor create(para1: JLThrowable); overload;
end;
JLAssertionError = class external 'java.lang' name 'AssertionError' (JLError)
public
constructor create(); overload;
constructor create(para1: JLObject); overload;
constructor create(para1: jboolean); overload;
constructor create(para1: jchar); overload;
constructor create(para1: jint); overload;
constructor create(para1: jlong); overload;
constructor create(para1: jfloat); overload;
constructor create(para1: jdouble); overload;
end;
JLThreadDeath = class external 'java.lang' name 'ThreadDeath' (JLError)
public
constructor create(); overload;
@ -24149,9 +24097,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -24181,9 +24126,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -43976,9 +43918,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44006,9 +43945,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44106,9 +44042,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44136,9 +44069,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44236,9 +44166,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44266,9 +44193,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44366,9 +44290,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44396,9 +44317,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44496,9 +44414,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44526,9 +44441,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;
@ -44626,9 +44538,6 @@
final class var
funsafe: SMUnsafe; external name 'unsafe';
funaligned: jboolean; external name 'unaligned';
strict protected
var
fviewedBuffer: JLObject; external name 'viewedBuffer';
public
function viewedBuffer(): JLObject; overload; virtual;
function cleaner(): SMCleaner; overload; virtual;

View File

@ -3575,11 +3575,6 @@ type
Arr2JLIClassDefinition = array of Arr1JLIClassDefinition;
Arr3JLIClassDefinition = array of Arr2JLIClassDefinition;
JSSystemEventQueueUtilities = class;
Arr1JSSystemEventQueueUtilities = array of JSSystemEventQueueUtilities;
Arr2JSSystemEventQueueUtilities = array of Arr1JSSystemEventQueueUtilities;
Arr3JSSystemEventQueueUtilities = array of Arr2JSSystemEventQueueUtilities;
JRNoSuchObjectException = class;
Arr1JRNoSuchObjectException = array of JRNoSuchObjectException;
Arr2JRNoSuchObjectException = array of Arr1JRNoSuchObjectException;
@ -4565,16 +4560,16 @@ type
Arr2JAIImagingOpException = array of Arr1JAIImagingOpException;
Arr3JAIImagingOpException = array of Arr2JAIImagingOpException;
JSInvalidParameterException = class;
Arr1JSInvalidParameterException = array of JSInvalidParameterException;
Arr2JSInvalidParameterException = array of Arr1JSInvalidParameterException;
Arr3JSInvalidParameterException = array of Arr2JSInvalidParameterException;
JLVirtualMachineError = class;
Arr1JLVirtualMachineError = array of JLVirtualMachineError;
Arr2JLVirtualMachineError = array of Arr1JLVirtualMachineError;
Arr3JLVirtualMachineError = array of Arr2JLVirtualMachineError;
JSInvalidParameterException = class;
Arr1JSInvalidParameterException = array of JSInvalidParameterException;
Arr2JSInvalidParameterException = array of Arr1JSInvalidParameterException;
Arr3JSInvalidParameterException = array of Arr2JSInvalidParameterException;
OJXDIDDOMTransform = class;
Arr1OJXDIDDOMTransform = array of OJXDIDDOMTransform;
Arr2OJXDIDDOMTransform = array of Arr1OJXDIDDOMTransform;
@ -13275,16 +13270,16 @@ type
Arr2JTAttributeEntry = array of Arr1JTAttributeEntry;
Arr3JTAttributeEntry = array of Arr2JTAttributeEntry;
JURPatternSyntaxException = class;
Arr1JURPatternSyntaxException = array of JURPatternSyntaxException;
Arr2JURPatternSyntaxException = array of Arr1JURPatternSyntaxException;
Arr3JURPatternSyntaxException = array of Arr2JURPatternSyntaxException;
JBDefaultPersistenceDelegate = class;
Arr1JBDefaultPersistenceDelegate = array of JBDefaultPersistenceDelegate;
Arr2JBDefaultPersistenceDelegate = array of Arr1JBDefaultPersistenceDelegate;
Arr3JBDefaultPersistenceDelegate = array of Arr2JBDefaultPersistenceDelegate;
JURPatternSyntaxException = class;
Arr1JURPatternSyntaxException = array of JURPatternSyntaxException;
Arr2JURPatternSyntaxException = array of Arr1JURPatternSyntaxException;
Arr3JURPatternSyntaxException = array of Arr2JURPatternSyntaxException;
JPAHashPrintRequestAttributeSet = class;
Arr1JPAHashPrintRequestAttributeSet = array of JPAHashPrintRequestAttributeSet;
Arr2JPAHashPrintRequestAttributeSet = array of Arr1JPAHashPrintRequestAttributeSet;
@ -14010,11 +14005,6 @@ type
Arr2JSPSSynthEditorPaneUI = array of Arr1JSPSSynthEditorPaneUI;
Arr3JSPSSynthEditorPaneUI = array of Arr2JSPSSynthEditorPaneUI;
JLAssertionError = class;
Arr1JLAssertionError = array of JLAssertionError;
Arr2JLAssertionError = array of Arr1JLAssertionError;
Arr3JLAssertionError = array of Arr2JLAssertionError;
JNURISyntaxException = class;
Arr1JNURISyntaxException = array of JNURISyntaxException;
Arr2JNURISyntaxException = array of Arr1JNURISyntaxException;

View File

@ -1289,14 +1289,15 @@ begin
end;
Procedure fpc_assert(Const Msg,FName:Shortstring;LineNo:Longint;ErrorAddr:Pointer); [Public,Alias : 'FPC_ASSERT']; compilerproc;
Procedure fpc_assert(Const Msg,FName:unicodestring;LineNo:Longint{;ErrorAddr:Pointer}); [Public,Alias : 'FPC_ASSERT']; compilerproc;
begin
(*
if pointer(AssertErrorProc)<>nil then
AssertErrorProc(Msg,FName,LineNo,ErrorAddr)
else
*)
HandleErrorFrame(227,get_frame);
*)
raise JLAssertionError.Create(JLObject(Fname+'('+unicodestring(JLInteger.valueOf(LineNo).toString)+'): '+Msg));
end;

17
tests/test/jvm/tassert.pp Normal file
View File

@ -0,0 +1,17 @@
program tassert;
{$mode objfpc}
var
b: byte;
caught: boolean;
begin
caught:=false;
try
assert(b=1,'yow');
except
caught:=true;
end;
if not caught then
halt(1);
end.

View File

@ -228,4 +228,8 @@ ppcjvm -O2 -g -B topovl
if %errorlevel% neq 0 exit /b %errorlevel%
java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. topovl
if %errorlevel% neq 0 exit /b %errorlevel%
ppcjvm -O2 -g -B tassert
if %errorlevel% neq 0 exit /b %errorlevel%
java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. -Sa tassert
if %errorlevel% neq 0 exit /b %errorlevel%

View File

@ -129,3 +129,5 @@ $PPC -O2 -g -B tnestdynarr
java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tnestdynarr
$PPC -O2 -g -B topovl
java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. topovl
$PPC -O2 -g -B -Sa tassert
java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tassert