Commit 1734c72e authored by Jacob Potter's avatar Jacob Potter

Fix local reference table overflow

parent 2aa776b9
...@@ -19,6 +19,7 @@ auto NativeItemList::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Loca ...@@ -19,6 +19,7 @@ auto NativeItemList::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Loca
} }
auto NativeItemList::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeItemList::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 2);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeItemList>::get(); const auto& data = ::djinni::JniClass<NativeItemList>::get();
return {::djinni::List<::djinni::String>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mItems))}; return {::djinni::List<::djinni::String>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mItems))};
......
...@@ -148,7 +148,7 @@ class JNIGenerator(spec: Spec) extends Generator(spec) { ...@@ -148,7 +148,7 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
w.wl w.wl
writeJniTypeParams(w, params) writeJniTypeParams(w, params)
w.w(s"auto $jniHelperWithParams::toCpp(JNIEnv* jniEnv, JniType j) -> CppType").braced { w.w(s"auto $jniHelperWithParams::toCpp(JNIEnv* jniEnv, JniType j) -> CppType").braced {
//w.wl(s"::${spec.jniNamespace}::JniLocalScope jscope(jniEnv, 10);") w.wl(s"::djinni::JniLocalScope jscope(jniEnv, ${r.fields.size + 1});")
w.wl(s"assert(j != nullptr);") w.wl(s"assert(j != nullptr);")
if(r.fields.isEmpty) if(r.fields.isEmpty)
w.wl("(void)j; // Suppress warnings in release builds for empty records") w.wl("(void)j; // Suppress warnings in release builds for empty records")
......
...@@ -26,6 +26,7 @@ auto NativeAssortedIntegers::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djin ...@@ -26,6 +26,7 @@ auto NativeAssortedIntegers::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djin
} }
auto NativeAssortedIntegers::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeAssortedIntegers::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 9);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeAssortedIntegers>::get(); const auto& data = ::djinni::JniClass<NativeAssortedIntegers>::get();
return {::djinni::I8::toCpp(jniEnv, jniEnv->GetByteField(j, data.field_mEight)), return {::djinni::I8::toCpp(jniEnv, jniEnv->GetByteField(j, data.field_mEight)),
......
...@@ -21,6 +21,7 @@ auto NativeClientReturnedRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> :: ...@@ -21,6 +21,7 @@ auto NativeClientReturnedRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::
} }
auto NativeClientReturnedRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeClientReturnedRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 4);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeClientReturnedRecord>::get(); const auto& data = ::djinni::JniClass<NativeClientReturnedRecord>::get();
return {::djinni::I64::toCpp(jniEnv, jniEnv->GetLongField(j, data.field_mRecordId)), return {::djinni::I64::toCpp(jniEnv, jniEnv->GetLongField(j, data.field_mRecordId)),
......
...@@ -20,6 +20,7 @@ auto NativeConstants::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Loc ...@@ -20,6 +20,7 @@ auto NativeConstants::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Loc
} }
auto NativeConstants::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeConstants::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 3);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeConstants>::get(); const auto& data = ::djinni::JniClass<NativeConstants>::get();
return {::djinni::I32::toCpp(jniEnv, jniEnv->GetIntField(j, data.field_mSomeInteger)), return {::djinni::I32::toCpp(jniEnv, jniEnv->GetIntField(j, data.field_mSomeInteger)),
......
...@@ -19,6 +19,7 @@ auto NativeDateRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Lo ...@@ -19,6 +19,7 @@ auto NativeDateRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Lo
} }
auto NativeDateRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeDateRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 2);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeDateRecord>::get(); const auto& data = ::djinni::JniClass<NativeDateRecord>::get();
return {::djinni::Date::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mCreatedAt))}; return {::djinni::Date::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mCreatedAt))};
......
...@@ -19,6 +19,7 @@ auto NativeMapDateRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni: ...@@ -19,6 +19,7 @@ auto NativeMapDateRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni:
} }
auto NativeMapDateRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeMapDateRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 2);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeMapDateRecord>::get(); const auto& data = ::djinni::JniClass<NativeMapDateRecord>::get();
return {::djinni::Map<::djinni::String, ::djinni::Date>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mDatesById))}; return {::djinni::Map<::djinni::String, ::djinni::Date>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mDatesById))};
......
...@@ -19,6 +19,7 @@ auto NativeMapListRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni: ...@@ -19,6 +19,7 @@ auto NativeMapListRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni:
} }
auto NativeMapListRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeMapListRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 2);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeMapListRecord>::get(); const auto& data = ::djinni::JniClass<NativeMapListRecord>::get();
return {::djinni::List<::djinni::Map<::djinni::String, ::djinni::I64>>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mMapList))}; return {::djinni::List<::djinni::Map<::djinni::String, ::djinni::I64>>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mMapList))};
......
...@@ -19,6 +19,7 @@ auto NativeMapRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Loc ...@@ -19,6 +19,7 @@ auto NativeMapRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Loc
} }
auto NativeMapRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeMapRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 2);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeMapRecord>::get(); const auto& data = ::djinni::JniClass<NativeMapRecord>::get();
return {::djinni::Map<::djinni::String, ::djinni::I64>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mMap))}; return {::djinni::Map<::djinni::String, ::djinni::I64>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mMap))};
......
...@@ -19,6 +19,7 @@ auto NativeNestedCollection::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djin ...@@ -19,6 +19,7 @@ auto NativeNestedCollection::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djin
} }
auto NativeNestedCollection::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeNestedCollection::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 2);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeNestedCollection>::get(); const auto& data = ::djinni::JniClass<NativeNestedCollection>::get();
return {::djinni::List<::djinni::Set<::djinni::String>>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mSetList))}; return {::djinni::List<::djinni::Set<::djinni::String>>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mSetList))};
......
...@@ -19,6 +19,7 @@ auto NativePrimitiveList::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni: ...@@ -19,6 +19,7 @@ auto NativePrimitiveList::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni:
} }
auto NativePrimitiveList::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativePrimitiveList::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 2);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativePrimitiveList>::get(); const auto& data = ::djinni::JniClass<NativePrimitiveList>::get();
return {::djinni::List<::djinni::I64>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mList))}; return {::djinni::List<::djinni::I64>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mList))};
......
...@@ -20,6 +20,7 @@ auto NativeRecordWithDerivings::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::d ...@@ -20,6 +20,7 @@ auto NativeRecordWithDerivings::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::d
} }
auto NativeRecordWithDerivings::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeRecordWithDerivings::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 3);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeRecordWithDerivings>::get(); const auto& data = ::djinni::JniClass<NativeRecordWithDerivings>::get();
return {::djinni::I32::toCpp(jniEnv, jniEnv->GetIntField(j, data.field_mKey1)), return {::djinni::I32::toCpp(jniEnv, jniEnv->GetIntField(j, data.field_mKey1)),
......
...@@ -21,6 +21,7 @@ auto NativeRecordWithNestedDerivings::fromCpp(JNIEnv* jniEnv, const CppType& c) ...@@ -21,6 +21,7 @@ auto NativeRecordWithNestedDerivings::fromCpp(JNIEnv* jniEnv, const CppType& c)
} }
auto NativeRecordWithNestedDerivings::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeRecordWithNestedDerivings::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 3);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeRecordWithNestedDerivings>::get(); const auto& data = ::djinni::JniClass<NativeRecordWithNestedDerivings>::get();
return {::djinni::I32::toCpp(jniEnv, jniEnv->GetIntField(j, data.field_mKey)), return {::djinni::I32::toCpp(jniEnv, jniEnv->GetIntField(j, data.field_mKey)),
......
...@@ -19,6 +19,7 @@ auto NativeSetRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Loc ...@@ -19,6 +19,7 @@ auto NativeSetRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::Loc
} }
auto NativeSetRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType { auto NativeSetRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 2);
assert(j != nullptr); assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeSetRecord>::get(); const auto& data = ::djinni::JniClass<NativeSetRecord>::get();
return {::djinni::Set<::djinni::String>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mSet))}; return {::djinni::Set<::djinni::String>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mSet))};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment