Partial fix for Object.clone/finalize invocation via MethodHandle. Open issues:

- Object.clone/finalize can't be called on Throwable or cli.System.Object derived objects
- Throwable.clone/finalize can't be called on cli.System.Exception derived objects
This commit is contained in:
jfrijters 2015-05-31 11:03:28 +00:00
Родитель d58046e071
Коммит 3cecb628c9
1 изменённых файлов: 5 добавлений и 0 удалений

Просмотреть файл

@ -905,6 +905,11 @@ static partial class MethodHandleUtil
{
dm.EmitCastclass(tw.TypeAsBaseType);
}
else if (mw.IsProtected && (mw.DeclaringType == CoreClasses.java.lang.Object.Wrapper || mw.DeclaringType == CoreClasses.java.lang.Throwable.Wrapper))
{
// HACK we don't support calling clone or finalize on cli.System.Object and cli.System.Exception
dm.EmitCastclass(tw.TypeAsBaseType);
}
else if (tw != CoreClasses.cli.System.Object.Wrapper)
{
dm.EmitCheckcast(tw);