1a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian/* 2a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * Copyright (C) 2013 The Android Open Source Project 3a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * 4a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 5a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * you may not use this file except in compliance with the License. 6a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * You may obtain a copy of the License at 7a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * 8a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 9a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * 10a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * Unless required by applicable law or agreed to in writing, software 11a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 12a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * See the License for the specific language governing permissions and 14a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian * limitations under the License. 15a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian */ 16a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 172965b26022f95051f65b09d7eac47cbe923855c9Mathias Agopianpackage android.support.v8.renderscript; 182965b26022f95051f65b09d7eac47cbe923855c9Mathias Agopian 195880cc573823148237eac9ab7bc586b8e4eb7160Jesse Hallimport android.content.Context; 2030bcc61431d8e3bef779472dd52a7b156dcaba09Mathias Agopianimport android.content.res.Resources; 215880cc573823148237eac9ab7bc586b8e4eb7160Jesse Hallimport android.util.Log; 22a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 23f1352df47fe20aed23c216a78923c7d248f2bb91Mathias Agopianimport java.io.File; 24f1352df47fe20aed23c216a78923c7d248f2bb91Mathias Agopianimport java.io.IOException; 25f1352df47fe20aed23c216a78923c7d248f2bb91Mathias Agopianimport java.io.InputStream; 26a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopianimport java.util.Map.Entry; 27a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopianimport java.util.HashMap; 28a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 29da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopianimport java.lang.reflect.Field; 308372785879d329f592f6883620b5a32d80d74691Mathias Agopianimport java.lang.reflect.Modifier; 313eb38cb33e41ce40dd1094bdec850f0fca9f8a53Mathias Agopian 322965b26022f95051f65b09d7eac47cbe923855c9Mathias Agopian/** 3322da60c3e64cd57535cbba063c07127814a2b52fMathias Agopian * 34a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian **/ 35921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopianclass ScriptCThunker extends android.renderscript.ScriptC { 36921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopian private static final String TAG = "ScriptC"; 37a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 383eb38cb33e41ce40dd1094bdec850f0fca9f8a53Mathias Agopian protected ScriptCThunker(RenderScriptThunker rs, Resources resources, int resourceID) { 39a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian super(rs.mN, resources, resourceID); 40a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian } 41e2c4f4ec23b735dd2a03f4ea8b08b288a1bb04e8Mathias Agopian 42a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian android.renderscript.Script.KernelID thunkCreateKernelID( 43921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopian int slot, int sig, Element ein, Element eout) { 44a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian 45c7d14e247117392fbd44aa454622778a25c076aeMathias Agopian android.renderscript.Element nein = null; 46da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopian android.renderscript.Element neout = null; 47a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian if (ein != null) { 48a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian nein = ((ElementThunker)ein).mN; 495880cc573823148237eac9ab7bc586b8e4eb7160Jesse Hall } 507296051995fbaea919480a6cc2dabb729dabc95bJesse Hall if (eout != null) { 519eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall neout = ((ElementThunker)eout).mN; 52afaf14b9fbfe8943d845e2f01e8a401ad7a4d854Jesse Hall } 53afaf14b9fbfe8943d845e2f01e8a401ad7a4d854Jesse Hall try { 54afaf14b9fbfe8943d845e2f01e8a401ad7a4d854Jesse Hall android.renderscript.Script.KernelID kid = createKernelID(slot, sig, nein, neout); 559eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall return kid; 569eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall } catch (android.renderscript.RSRuntimeException e) { 579eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall throw ExceptionThunker.convertException(e); 589eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall } 599eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall } 609eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall 619eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall 629eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall void thunkInvoke(int slot) { 639eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall try { 649eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall invoke(slot); 659eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall } catch (android.renderscript.RSRuntimeException e) { 669eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall throw ExceptionThunker.convertException(e); 679eb1eb5bb55740982ceae9966fc536824edc302aJesse Hall } 68bbd164a3c790a0649dffd2f015e6f47692c72e1cJesse Hall } 69bbd164a3c790a0649dffd2f015e6f47692c72e1cJesse Hall 70a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian void thunkBindAllocation(Allocation va, int slot) { 71a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian android.renderscript.Allocation nva = null; 723e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian if (va != null) { 733e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian nva = ((AllocationThunker)va).mN; 743e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian } 753e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian try { 763e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian bindAllocation(nva, slot); 773e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian } catch (android.renderscript.RSRuntimeException e) { 783e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian throw ExceptionThunker.convertException(e); 793e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian } 803e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian } 813e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian 823e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian void thunkSetTimeZone(String timeZone) { 833e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian try { 843e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian setTimeZone(timeZone); 853eb38cb33e41ce40dd1094bdec850f0fca9f8a53Mathias Agopian } catch (android.renderscript.RSRuntimeException e) { 863eb38cb33e41ce40dd1094bdec850f0fca9f8a53Mathias Agopian throw ExceptionThunker.convertException(e); 87b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 88c7d14e247117392fbd44aa454622778a25c076aeMathias Agopian } 89b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden 903e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian void thunkInvoke(int slot, FieldPacker v) { 91e60b0687c8d49871d0c8786cabe6851f7a7783b5Mathias Agopian try { 92e2c4f4ec23b735dd2a03f4ea8b08b288a1bb04e8Mathias Agopian android.renderscript.FieldPacker nfp = 93a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian new android.renderscript.FieldPacker(v.getData()); 94e60b0687c8d49871d0c8786cabe6851f7a7783b5Mathias Agopian invoke(slot, nfp); 95e60b0687c8d49871d0c8786cabe6851f7a7783b5Mathias Agopian } catch (android.renderscript.RSRuntimeException e) { 96e60b0687c8d49871d0c8786cabe6851f7a7783b5Mathias Agopian throw ExceptionThunker.convertException(e); 97b685c542836b93c99cd85053e07696406ea37adbJesse Hall } 98e2c4f4ec23b735dd2a03f4ea8b08b288a1bb04e8Mathias Agopian } 99e2c4f4ec23b735dd2a03f4ea8b08b288a1bb04e8Mathias Agopian 100e2c4f4ec23b735dd2a03f4ea8b08b288a1bb04e8Mathias Agopian void thunkForEach(int slot, Allocation ain, Allocation aout, FieldPacker v) { 101e2c4f4ec23b735dd2a03f4ea8b08b288a1bb04e8Mathias Agopian android.renderscript.Allocation nin = null; 102028508cad5ef63ef9fbd42c14e76658e4fd9ebf2Mathias Agopian android.renderscript.Allocation nout = null; 1035880cc573823148237eac9ab7bc586b8e4eb7160Jesse Hall android.renderscript.FieldPacker nfp = null; 104b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden if (ain != null) { 105ef64b75a936ffd194673dbce6766995f86b42ba9Jesse Hall nin = ((AllocationThunker)ain).mN; 106b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 107bbd164a3c790a0649dffd2f015e6f47692c72e1cJesse Hall if (aout != null) { 108da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopian nout = ((AllocationThunker)aout).mN; 109da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopian } 110da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopian try { 111da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopian if (v != null) { 112da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopian nfp = new android.renderscript.FieldPacker(v.getData()); 113da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopian } 114da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopian forEach(slot, nin, nout, nfp); 115da27af9832a0170f1fc40ef3f21371c4d30d21b3Mathias Agopian } catch (android.renderscript.RSRuntimeException e) { 116babba1868773eba5edf8a8e335b8e109a32292e0Andy McFadden throw ExceptionThunker.convertException(e); 117babba1868773eba5edf8a8e335b8e109a32292e0Andy McFadden } 118babba1868773eba5edf8a8e335b8e109a32292e0Andy McFadden } 119ef64b75a936ffd194673dbce6766995f86b42ba9Jesse Hall 120ef64b75a936ffd194673dbce6766995f86b42ba9Jesse Hall void thunkForEach(int slot, Allocation ain, Allocation aout, FieldPacker v, 12143601a2dc320a271ff8c3765ff61414a07221635Andy McFadden android.support.v8.renderscript.Script.LaunchOptions sc) { 12243601a2dc320a271ff8c3765ff61414a07221635Andy McFadden try { 12343601a2dc320a271ff8c3765ff61414a07221635Andy McFadden android.renderscript.Script.LaunchOptions lo = null; 124620685c2e684082c82657732d1e35cefd0c79006Andy McFadden if (sc != null) { 125afaf14b9fbfe8943d845e2f01e8a401ad7a4d854Jesse Hall lo = new android.renderscript.Script.LaunchOptions(); 126620685c2e684082c82657732d1e35cefd0c79006Andy McFadden if (sc.getXEnd() > 0) lo.setX(sc.getXStart(), sc.getXEnd()); 127620685c2e684082c82657732d1e35cefd0c79006Andy McFadden if (sc.getYEnd() > 0) lo.setY(sc.getYStart(), sc.getYEnd()); 128620685c2e684082c82657732d1e35cefd0c79006Andy McFadden if (sc.getZEnd() > 0) lo.setZ(sc.getZStart(), sc.getZEnd()); 129b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 130b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden 131b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden android.renderscript.Allocation nin = null; 132b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden android.renderscript.Allocation nout = null; 133b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden android.renderscript.FieldPacker nfp = null; 134b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden if (ain != null) { 135b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden nin = ((AllocationThunker)ain).mN; 136b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 137b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden if (aout != null) { 138b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden nout = ((AllocationThunker)aout).mN; 139b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 140b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden if (v != null) { 141b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden nfp = new android.renderscript.FieldPacker(v.getData()); 142b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 143b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden forEach(slot, nin, nout, nfp, lo); 144b685c542836b93c99cd85053e07696406ea37adbJesse Hall } catch (android.renderscript.RSRuntimeException e) { 145b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden throw ExceptionThunker.convertException(e); 146b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 147b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 14881cd5d3b94d21253a0be925f4ae58cc7f4afeef7Mathias Agopian 1498f971ff6661c875e7adb3f14731e1579c3c80c62Jesse Hall void thunkSetVar(int index, float v) { 150b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden try { 151b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden setVar(index, v); 152b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } catch (android.renderscript.RSRuntimeException e) { 153b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden throw ExceptionThunker.convertException(e); 154b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 155b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 156b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden void thunkSetVar(int index, double v) { 157afaf14b9fbfe8943d845e2f01e8a401ad7a4d854Jesse Hall try { 158b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden setVar(index, v); 159b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } catch (android.renderscript.RSRuntimeException e) { 160c7d14e247117392fbd44aa454622778a25c076aeMathias Agopian throw ExceptionThunker.convertException(e); 1613a77871383bc1a03cc866686d81628493d14de7cMathias Agopian } 1623a77871383bc1a03cc866686d81628493d14de7cMathias Agopian } 163b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden void thunkSetVar(int index, int v) { 1641bd20e0f9ecd27cc5ad2bdf08b01837ecc10c357Jesse Hall try { 1651bd20e0f9ecd27cc5ad2bdf08b01837ecc10c357Jesse Hall setVar(index, v); 1661bd20e0f9ecd27cc5ad2bdf08b01837ecc10c357Jesse Hall } catch (android.renderscript.RSRuntimeException e) { 167f435863467ab407f2a482604beed5fa6f0144c62Mathias Agopian throw ExceptionThunker.convertException(e); 16838e623bc5c2d7224ebd5b82efaea401bc8e5367aMathias Agopian } 169db27621e22559a1b16414f890677ef04242fbc3bJesse Hall } 170db27621e22559a1b16414f890677ef04242fbc3bJesse Hall void thunkSetVar(int index, long v) { 171b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden try { 172b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden setVar(index, v); 173b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } catch (android.renderscript.RSRuntimeException e) { 174f435863467ab407f2a482604beed5fa6f0144c62Mathias Agopian throw ExceptionThunker.convertException(e); 175b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 176f435863467ab407f2a482604beed5fa6f0144c62Mathias Agopian } 177f435863467ab407f2a482604beed5fa6f0144c62Mathias Agopian void thunkSetVar(int index, boolean v) { 178f435863467ab407f2a482604beed5fa6f0144c62Mathias Agopian try { 179f435863467ab407f2a482604beed5fa6f0144c62Mathias Agopian setVar(index, v); 1801bd20e0f9ecd27cc5ad2bdf08b01837ecc10c357Jesse Hall } catch (android.renderscript.RSRuntimeException e) { 1811bd20e0f9ecd27cc5ad2bdf08b01837ecc10c357Jesse Hall throw ExceptionThunker.convertException(e); 182888c822c4cb6976aab9256c58bae9e17e3e55c5cMathias Agopian } 1831bd20e0f9ecd27cc5ad2bdf08b01837ecc10c357Jesse Hall } 1841604f777d11c40daae8ec91d8ea75625996bfbacMathias Agopian 185afaf14b9fbfe8943d845e2f01e8a401ad7a4d854Jesse Hall void thunkSetVar(int index, BaseObj o) { 1861604f777d11c40daae8ec91d8ea75625996bfbacMathias Agopian if (o == null) { 1871604f777d11c40daae8ec91d8ea75625996bfbacMathias Agopian try { 188888c822c4cb6976aab9256c58bae9e17e3e55c5cMathias Agopian setVar(index, 0); 189888c822c4cb6976aab9256c58bae9e17e3e55c5cMathias Agopian } catch (android.renderscript.RSRuntimeException e) { 1903a77871383bc1a03cc866686d81628493d14de7cMathias Agopian throw ExceptionThunker.convertException(e); 1913a77871383bc1a03cc866686d81628493d14de7cMathias Agopian } 1923a77871383bc1a03cc866686d81628493d14de7cMathias Agopian return; 193a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian } 194a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian try { 195a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian setVar(index, o.getNObj()); 196a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian } catch (android.renderscript.RSRuntimeException e) { 197babba1868773eba5edf8a8e335b8e109a32292e0Andy McFadden throw ExceptionThunker.convertException(e); 19881cd5d3b94d21253a0be925f4ae58cc7f4afeef7Mathias Agopian } 199babba1868773eba5edf8a8e335b8e109a32292e0Andy McFadden } 2003eb38cb33e41ce40dd1094bdec850f0fca9f8a53Mathias Agopian void thunkSetVar(int index, FieldPacker v) { 2013eb38cb33e41ce40dd1094bdec850f0fca9f8a53Mathias Agopian try { 2023eb38cb33e41ce40dd1094bdec850f0fca9f8a53Mathias Agopian android.renderscript.FieldPacker nfp = 203a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian new android.renderscript.FieldPacker(v.getData()); 2045880cc573823148237eac9ab7bc586b8e4eb7160Jesse Hall setVar(index, nfp); 205a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian } catch (android.renderscript.RSRuntimeException e) { 206b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden throw ExceptionThunker.convertException(e); 207b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 208b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 2093e8b853d67c737abdb363f9c978e7d83eac4d888Mathias Agopian 210a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian void thunkSetVar(int index, FieldPacker v, Element e, int[] dims) { 211a350ff98692b3a50cad5cc93f9f83221242ca86aMathias Agopian try { 212b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden android.renderscript.FieldPacker nfp = 213b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden new android.renderscript.FieldPacker(v.getData()); 214b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden ElementThunker et = (ElementThunker)e; 215b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden setVar(index, nfp, et.mN, dims); 216b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } catch (android.renderscript.RSRuntimeException exc) { 217b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden throw ExceptionThunker.convertException(exc); 218b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 219b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 220b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden 221b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden android.renderscript.Script.FieldID thunkCreateFieldID(int slot, Element e) { 222b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden try { 223b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden ElementThunker et = (ElementThunker) e; 224b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden return createFieldID(slot, et.getNObj()); 225b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } catch (android.renderscript.RSRuntimeException exc) { 226b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden throw ExceptionThunker.convertException(exc); 227b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 228b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden } 229b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden 230b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden} 231b0d1dd36f104c0b581674adc7f830cbf44b7db06Andy McFadden