MyClassNatives.java revision 9d4b6da934934c322536ee3309b63ce402740f49
12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/* 22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2011 The Android Open Source Project 32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License. 62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at 72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software 112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and 142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License. 152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */ 169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom 179d4b6da934934c322536ee3309b63ce402740f49Igor Murashkinimport dalvik.annotation.optimization.FastNative; 189d4b6da934934c322536ee3309b63ce402740f49Igor Murashkin 19b264f081424642b06b0bbe7102781895d41faa9dElliott Hughesclass MyClassNatives { 20a2501990dd0f68baf38ce19251949d7bb3ecfe5aElliott Hughes native void throwException(); 219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom native void foo(); 2231384c59bb4b387f29f2b6d4d3db886c29b81170Shih-wei Liao native int bar(int count); 231cefdbdff559aff5a3ee5c0878ba3b505109e0f9Ian Rogers static native int sbar(int count); 249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom native int fooI(int x); 259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom native int fooII(int x, int y); 269b269d281d16798b0c24027c32ec6507f71b2787Ian Rogers native long fooJJ(long x, long y); 279b269d281d16798b0c24027c32ec6507f71b2787Ian Rogers native Object fooO(Object x); 289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom native double fooDD(double x, double y); 293e778f7ee62fe75912379531022a09230c25f5f8Elliott Hughes synchronized native long fooJJ_synchronized(long x, long y); 309f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom native Object fooIOO(int x, Object y, Object z); 319f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom static native Object fooSIOO(int x, Object y, Object z); 3282da44b625a1af03c0b768c71f1cef29831127c3Shih-wei Liao static native int fooSII(int x, int y); 337a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers static native double fooSDD(double x, double y); 349f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom static synchronized native Object fooSSIOO(int x, Object y, Object z); 35b9231c81fad1c9d85ea7e6db9120f872e3417380Ian Rogers static native void arraycopy(Object src, int src_pos, Object dst, int dst_pos, int length); 3667375acd9fec74cc2054554fe1ed0a7d213e1e47Ian Rogers native boolean compareAndSwapInt(Object obj, long offset, int expected, int newval); 37c77928475995d01e1d6d2b2d6672510d01a5fce4Ian Rogers static native int getText(long val1, Object obj1, long val2, Object obj2); 38fc7120c0293b96218d55abee29882f101acbc79bBrian Carlstrom synchronized native Object []getSinkPropertiesNative(String path); 39b264f081424642b06b0bbe7102781895d41faa9dElliott Hughes 40166aaee6aa39c20c87113b3fcf0dcd81e0a934cbAndreas Gampe native Class<?> instanceMethodThatShouldReturnClass(); 41166aaee6aa39c20c87113b3fcf0dcd81e0a934cbAndreas Gampe static native Class<?> staticMethodThatShouldReturnClass(); 42b264f081424642b06b0bbe7102781895d41faa9dElliott Hughes 43166aaee6aa39c20c87113b3fcf0dcd81e0a934cbAndreas Gampe native void instanceMethodThatShouldTakeClass(int i, Class<?> c); 44166aaee6aa39c20c87113b3fcf0dcd81e0a934cbAndreas Gampe static native void staticMethodThatShouldTakeClass(int i, Class<?> c); 457a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe 467a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe native float checkFloats(float f1, float f2); 477a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe native void forceStackParameters(int i1, int i2, int i3, int i4, int i5, int i6, int i8, int i9, 487a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe float f1, float f2, float f3, float f4, float f5, float f6, 497a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe float f7, float f8, float f9); 507a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe native void checkParameterAlign(int i1, long l1); 517a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe native void maxParamNumber(Object o0, Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, 527a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o8, Object o9, Object o10, Object o11, Object o12, Object o13, Object o14, Object o15, 537a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o16, Object o17, Object o18, Object o19, Object o20, Object o21, Object o22, Object o23, 547a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o24, Object o25, Object o26, Object o27, Object o28, Object o29, Object o30, Object o31, 557a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o32, Object o33, Object o34, Object o35, Object o36, Object o37, Object o38, Object o39, 567a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o40, Object o41, Object o42, Object o43, Object o44, Object o45, Object o46, Object o47, 577a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o48, Object o49, Object o50, Object o51, Object o52, Object o53, Object o54, Object o55, 587a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o56, Object o57, Object o58, Object o59, Object o60, Object o61, Object o62, Object o63, 597a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o64, Object o65, Object o66, Object o67, Object o68, Object o69, Object o70, Object o71, 607a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o72, Object o73, Object o74, Object o75, Object o76, Object o77, Object o78, Object o79, 617a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o80, Object o81, Object o82, Object o83, Object o84, Object o85, Object o86, Object o87, 627a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o88, Object o89, Object o90, Object o91, Object o92, Object o93, Object o94, Object o95, 637a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o96, Object o97, Object o98, Object o99, Object o100, Object o101, Object o102, Object o103, 647a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o104, Object o105, Object o106, Object o107, Object o108, Object o109, Object o110, Object o111, 657a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o112, Object o113, Object o114, Object o115, Object o116, Object o117, Object o118, Object o119, 667a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o120, Object o121, Object o122, Object o123, Object o124, Object o125, Object o126, Object o127, 677a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o128, Object o129, Object o130, Object o131, Object o132, Object o133, Object o134, Object o135, 687a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o136, Object o137, Object o138, Object o139, Object o140, Object o141, Object o142, Object o143, 697a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o144, Object o145, Object o146, Object o147, Object o148, Object o149, Object o150, Object o151, 707a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o152, Object o153, Object o154, Object o155, Object o156, Object o157, Object o158, Object o159, 717a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o160, Object o161, Object o162, Object o163, Object o164, Object o165, Object o166, Object o167, 727a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o168, Object o169, Object o170, Object o171, Object o172, Object o173, Object o174, Object o175, 737a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o176, Object o177, Object o178, Object o179, Object o180, Object o181, Object o182, Object o183, 747a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o184, Object o185, Object o186, Object o187, Object o188, Object o189, Object o190, Object o191, 757a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o192, Object o193, Object o194, Object o195, Object o196, Object o197, Object o198, Object o199, 767a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o200, Object o201, Object o202, Object o203, Object o204, Object o205, Object o206, Object o207, 777a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o208, Object o209, Object o210, Object o211, Object o212, Object o213, Object o214, Object o215, 787a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o216, Object o217, Object o218, Object o219, Object o220, Object o221, Object o222, Object o223, 797a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o224, Object o225, Object o226, Object o227, Object o228, Object o229, Object o230, Object o231, 807a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o232, Object o233, Object o234, Object o235, Object o236, Object o237, Object o238, Object o239, 817a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o240, Object o241, Object o242, Object o243, Object o244, Object o245, Object o246, Object o247, 827a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe Object o248, Object o249, Object o250, Object o251, Object o252, Object o253); 837a0e504e60441012c78fc2f3ab8d4da131185c50Andreas Gampe 84ad61517890168ff6ed19063cc8032a9c033d135bAndreas Gampe native void withoutImplementation(); 8548ee356484225ef0d7cfa197b1699524b866c802Andreas Gampe native Object withoutImplementationRefReturn(); 8654accbca0b549b1b1ad3ef09655dad438bc1e104Nicolas Geoffray 871dd61ba3081a52c3e2efdc78d64f5c134eea7895Vladimir Kostyukov native static void stackArgsIntsFirst(int i1, int i2, int i3, int i4, int i5, int i6, int i7, 881dd61ba3081a52c3e2efdc78d64f5c134eea7895Vladimir Kostyukov int i8, int i9, int i10, float f1, float f2, float f3, float f4, float f5, float f6, 891dd61ba3081a52c3e2efdc78d64f5c134eea7895Vladimir Kostyukov float f7, float f8, float f9, float f10); 9054accbca0b549b1b1ad3ef09655dad438bc1e104Nicolas Geoffray 911dd61ba3081a52c3e2efdc78d64f5c134eea7895Vladimir Kostyukov native static void stackArgsFloatsFirst(float f1, float f2, float f3, float f4, float f5, 921dd61ba3081a52c3e2efdc78d64f5c134eea7895Vladimir Kostyukov float f6, float f7, float f8, float f9, float f10, int i1, int i2, int i3, int i4, int i5, 931dd61ba3081a52c3e2efdc78d64f5c134eea7895Vladimir Kostyukov int i6, int i7, int i8, int i9, int i10); 9454accbca0b549b1b1ad3ef09655dad438bc1e104Nicolas Geoffray 951dd61ba3081a52c3e2efdc78d64f5c134eea7895Vladimir Kostyukov native static void stackArgsMixed(int i1, float f1, int i2, float f2, int i3, float f3, int i4, 961dd61ba3081a52c3e2efdc78d64f5c134eea7895Vladimir Kostyukov float f4, int i5, float f5, int i6, float f6, int i7, float f7, int i8, float f8, int i9, 971dd61ba3081a52c3e2efdc78d64f5c134eea7895Vladimir Kostyukov float f9, int i10, float f10); 9854accbca0b549b1b1ad3ef09655dad438bc1e104Nicolas Geoffray 99f652d605753f1387e7797461b47116c5dcdf928dLazar Trsic native static void stackArgsSignExtendedMips64(int i1, int i2, int i3, int i4, int i5, int i6, 100f652d605753f1387e7797461b47116c5dcdf928dLazar Trsic int i7, int i8); 101f652d605753f1387e7797461b47116c5dcdf928dLazar Trsic 10254accbca0b549b1b1ad3ef09655dad438bc1e104Nicolas Geoffray static native double logD(double d); 10354accbca0b549b1b1ad3ef09655dad438bc1e104Nicolas Geoffray static native float logF(float f); 10454accbca0b549b1b1ad3ef09655dad438bc1e104Nicolas Geoffray static native boolean returnTrue(); 10554accbca0b549b1b1ad3ef09655dad438bc1e104Nicolas Geoffray static native boolean returnFalse(); 10654accbca0b549b1b1ad3ef09655dad438bc1e104Nicolas Geoffray static native int returnInt(); 1079d4b6da934934c322536ee3309b63ce402740f49Igor Murashkin 1089d4b6da934934c322536ee3309b63ce402740f49Igor Murashkin // Check for @FastNative annotation presence [or lack of presence]. 1099d4b6da934934c322536ee3309b63ce402740f49Igor Murashkin public static native void normalNative(); 1109d4b6da934934c322536ee3309b63ce402740f49Igor Murashkin @FastNative 1119d4b6da934934c322536ee3309b63ce402740f49Igor Murashkin public static native void fastNative(); 1123e778f7ee62fe75912379531022a09230c25f5f8Elliott Hughes} 113