Support ObjC blocks in the new MM
This commit is contained in:
committed by
Space
parent
94076300ec
commit
3388ca2536
@@ -4759,7 +4759,7 @@ Task frameworkTest(String name, Closure<FrameworkTest> configurator) {
|
||||
|
||||
if (isAppleTarget(project)) {
|
||||
frameworkTest('testObjCExport') {
|
||||
enabled = !isExperimentalMM // Experimental MM doesn't support ObjC blocks and thread state switching for ObjC interop yet.
|
||||
enabled = !isExperimentalMM // Experimental MM does not support Obj-C weaks and thread state switching for ObjC interop yet.
|
||||
final String frameworkName = 'Kt'
|
||||
final String dir = "$testOutputFramework/testObjCExport"
|
||||
final File lazyHeader = file("$dir/$target-lazy.h")
|
||||
@@ -4808,7 +4808,7 @@ if (isAppleTarget(project)) {
|
||||
}
|
||||
|
||||
frameworkTest('testObjCExportNoGenerics') {
|
||||
enabled = !isExperimentalMM // Experimental MM doesn't support ObjC blocks and thread state switching for ObjC interop yet.
|
||||
enabled = !isExperimentalMM // Experimental MM does not support Obj-C weaks and thread state switching for ObjC interop yet.
|
||||
final String frameworkName = 'KtNoGenerics'
|
||||
final String frameworkArtifactName = 'Kt'
|
||||
final String dir = "$testOutputFramework/testObjCExportNoGenerics"
|
||||
@@ -4861,7 +4861,7 @@ if (isAppleTarget(project)) {
|
||||
}
|
||||
|
||||
frameworkTest('testObjCExportStatic') {
|
||||
enabled = !isExperimentalMM // Experimental MM doesn't support ObjC blocks and thread state switching for ObjC interop yet.
|
||||
enabled = !isExperimentalMM // Experimental MM does not support Obj-C weaks and thread state switching for ObjC interop yet.
|
||||
final String frameworkName = 'KtStatic'
|
||||
final String frameworkArtifactName = 'Kt'
|
||||
final String libraryName = frameworkName + "Library"
|
||||
|
||||
@@ -444,6 +444,12 @@ extern "C" void EnsureNeverFrozen(ObjHeader* obj) {
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" ForeignRefContext InitLocalForeignRef(ObjHeader* object) {
|
||||
// TODO: Remove when legacy MM is gone.
|
||||
// Nothing to do.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
extern "C" ForeignRefContext InitForeignRef(ObjHeader* object) {
|
||||
auto* threadData = mm::ThreadRegistry::Instance().CurrentThreadData();
|
||||
auto* node = mm::StableRefRegistry::Instance().RegisterStableRef(threadData, object);
|
||||
@@ -451,6 +457,7 @@ extern "C" ForeignRefContext InitForeignRef(ObjHeader* object) {
|
||||
}
|
||||
|
||||
extern "C" void DeinitForeignRef(ObjHeader* object, ForeignRefContext context) {
|
||||
RuntimeAssert(context != nullptr, "DeinitForeignRef must not be called for InitLocalForeignRef");
|
||||
auto* threadData = mm::ThreadRegistry::Instance().CurrentThreadData();
|
||||
auto* node = FromForeignRefManager(context);
|
||||
RuntimeAssert(object == **node, "Must correspond to the same object");
|
||||
|
||||
@@ -21,8 +21,4 @@ RUNTIME_NOTHROW void ReleaseHeapRefNoCollect(const ObjHeader* object) {
|
||||
TODO();
|
||||
}
|
||||
|
||||
ForeignRefContext InitLocalForeignRef(ObjHeader* object) {
|
||||
TODO();
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
Reference in New Issue
Block a user