)]}'
{
  "commit": "80808dac23bb3174f31c4f1f82281da00ea32a09",
  "tree": "6f549fc12fac8819c4429de8dd1117ddaf812752",
  "parents": [
    "24f449b06f48fc25956c1decef9446a7b61fe803"
  ],
  "author": {
    "name": "Mahesh Hegde",
    "email": "46179734+mahesh-hegde@users.noreply.github.com",
    "time": "Thu Apr 20 17:08:48 2023 +0530"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Apr 20 13:38:48 2023 +0200"
  },
  "message": "[jnigen] Further FFI improvements (https://github.com/dart-lang/jnigen/issues/254)\n\n* Add DllMain lock initialization in windows\r\n* release lock on second init check\r\n* Use wrapper class instead of extensions.\r\n* Rename GlobalJniEnv in C to `GlobalJniEnvStruct`, and `JniAccessors` to `JniAccessorsStruct`\r\n* In dart, generate wrapper classes that store a pointer to above.\r\n* Then generate methods which are semantically equivalent to the extensions in previous iterations.\r\n* But internally, results of `asFunction` are cached to late field instead of being called again. (This is what ffigen does too).\r\n* Do not generate extensions for local env \u0026 javavm types\r\n* Remove -j\r\n* Add --test-randomize-ordering-seed random",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f1afa9de04bd08df08f2ef51034ae736f1687388",
      "old_mode": 33188,
      "old_path": ".github/workflows/test-package.yml",
      "new_id": "a5bb09e671f884ac122f889ac60656745a03fb50",
      "new_mode": 33188,
      "new_path": ".github/workflows/test-package.yml"
    },
    {
      "type": "modify",
      "old_id": "66045aec7c158ddf03798e912c191e7f002f4f78",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/accessors.dart",
      "new_id": "e2bee890562a8d6e12470b2122e68ff451386891",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/accessors.dart"
    },
    {
      "type": "modify",
      "old_id": "8ad7fd4c3bd67cd476b2a3b9857909ddcf5b1e0b",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/jni.dart",
      "new_id": "277c2a5fe8540d77f8c7d70f913675af63b875e8",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/jni.dart"
    },
    {
      "type": "modify",
      "old_id": "e71febfc11700e643ab4fcef1575d387f9615a8c",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/jreference.dart",
      "new_id": "3a96bb338553959274ef5e16d1d0b5eb0221459c",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/jreference.dart"
    },
    {
      "type": "modify",
      "old_id": "e561eef4b43ce34668fb7ec99fa5395ed61adb57",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/third_party/global_env_extensions.dart",
      "new_id": "2d2a0289257d460276bcf0c6d4e7c89cde83e322",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/third_party/global_env_extensions.dart"
    },
    {
      "type": "modify",
      "old_id": "eb5ba0bfd0847a4d6c33c3121448f1ec5b51663b",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/third_party/jni_bindings_generated.dart",
      "new_id": "6d54cda41d3114f8b93f471fb1a32684c0ed54a1",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/third_party/jni_bindings_generated.dart"
    },
    {
      "type": "delete",
      "old_id": "7c145f990559e7f1902b877cc2a1ecede0ecbc23",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/third_party/jnienv_javavm_extensions.dart",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "cc2dbecefe30494a5684e7d23452b8bca427b760",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/types.dart",
      "new_id": "90b9378a1a8b6746c1167948f2d72ebbe0231913",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/types.dart"
    },
    {
      "type": "modify",
      "old_id": "74c4a119f59df06e84f9fd96122713b5549bab4f",
      "old_mode": 33188,
      "old_path": "pkgs/jni/src/dartjni.c",
      "new_id": "7346fef1afce21e7cbafe37f990381b783a61f2e",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/dartjni.c"
    },
    {
      "type": "modify",
      "old_id": "eb73318d13c9d7f612c02354078c52ccf97586b7",
      "old_mode": 33188,
      "old_path": "pkgs/jni/src/dartjni.h",
      "new_id": "21cef2036c6031b5783310481bbbe2cdf383b330",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/dartjni.h"
    },
    {
      "type": "modify",
      "old_id": "600b585b3866f23ed5ad889b2e8acdb6513cc239",
      "old_mode": 33188,
      "old_path": "pkgs/jni/src/third_party/global_jni_env.c",
      "new_id": "c5be7b06927899325aca0ace96cdfc6cd004c29c",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/third_party/global_jni_env.c"
    },
    {
      "type": "modify",
      "old_id": "8966d2bddebde4e9cf5f958056d23cbadd1a25fa",
      "old_mode": 33188,
      "old_path": "pkgs/jni/src/third_party/global_jni_env.h",
      "new_id": "562b1bf648c9357991253dd8ca5c26d75f6b1737",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/third_party/global_jni_env.h"
    },
    {
      "type": "modify",
      "old_id": "ef907bf16500e2edb918529a4a64a29c6992a8fb",
      "old_mode": 33188,
      "old_path": "pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart",
      "new_id": "cde47c9a0af6408d33a5e32538a18fe1bbf0ba4b",
      "new_mode": 33188,
      "new_path": "pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart"
    },
    {
      "type": "modify",
      "old_id": "1ec422d93556a09f3aae9ee71518bd6fbd1b5796",
      "old_mode": 33188,
      "old_path": "pkgs/jni/tool/wrapper_generators/generate_dart_extensions.dart",
      "new_id": "c78b883687f7e9a70cd1931fdd527bf99fe7577a",
      "new_mode": 33188,
      "new_path": "pkgs/jni/tool/wrapper_generators/generate_dart_extensions.dart"
    },
    {
      "type": "modify",
      "old_id": "eb73318d13c9d7f612c02354078c52ccf97586b7",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/in_app_java/src/android_utils/dartjni.h",
      "new_id": "21cef2036c6031b5783310481bbbe2cdf383b330",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/in_app_java/src/android_utils/dartjni.h"
    },
    {
      "type": "modify",
      "old_id": "eb73318d13c9d7f612c02354078c52ccf97586b7",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/kotlin_plugin/src/dartjni.h",
      "new_id": "21cef2036c6031b5783310481bbbe2cdf383b330",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/src/dartjni.h"
    },
    {
      "type": "modify",
      "old_id": "eb73318d13c9d7f612c02354078c52ccf97586b7",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/notification_plugin/src/dartjni.h",
      "new_id": "21cef2036c6031b5783310481bbbe2cdf383b330",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/notification_plugin/src/dartjni.h"
    },
    {
      "type": "modify",
      "old_id": "eb73318d13c9d7f612c02354078c52ccf97586b7",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/pdfbox_plugin/src/third_party/dartjni.h",
      "new_id": "21cef2036c6031b5783310481bbbe2cdf383b330",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/pdfbox_plugin/src/third_party/dartjni.h"
    },
    {
      "type": "modify",
      "old_id": "eb73318d13c9d7f612c02354078c52ccf97586b7",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/kotlin_test/src/dartjni.h",
      "new_id": "21cef2036c6031b5783310481bbbe2cdf383b330",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/src/dartjni.h"
    },
    {
      "type": "modify",
      "old_id": "eb73318d13c9d7f612c02354078c52ccf97586b7",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/simple_package_test/src/dartjni.h",
      "new_id": "21cef2036c6031b5783310481bbbe2cdf383b330",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/simple_package_test/src/dartjni.h"
    }
  ]
}
