/** * Convenience method returning true if this method is native. */ public boolean isNative() { return Modifier.isNative(this.getModifiers()); }
if (isNative(m)) { buffer.append("native ");
if (!Modifier.isAbstract(method.getModifiers()) && !Modifier.isNative(method.getModifiers())) { if (!method.hasActiveBody()) {
if (!Modifier.isAbstract(method.getModifiers()) && !Modifier.isNative(method.getModifiers())) { if (!method.hasActiveBody()) { throw new RuntimeException("method " + method.getName() + " has no active body!");
if (!Modifier.isNative(method.getModifiers()) && !Modifier.isAbstract(method.getModifiers())) { emit(" .limit stack ?"); stackLimitIndex = code.size() - 1; if (!Modifier.isNative(method.getModifiers()) && !Modifier.isAbstract(method.getModifiers())) { code.set(stackLimitIndex, " .limit stack " + maxStackHeight);
if (!Modifier.isNative(method.getModifiers()) && !Modifier.isAbstract(method.getModifiers())) { emit(" .limit stack ?"); stackLimitIndex = code.size() - 1; if (!Modifier.isNative(method.getModifiers()) && !Modifier.isAbstract(method.getModifiers())) { code.set(stackLimitIndex, " .limit stack " + maxStackHeight);
if (!Modifier.isAbstract(method.getModifiers()) && !Modifier.isNative(method.getModifiers())) { if (!method.hasActiveBody()) { throw new RuntimeException("method " + method.getName() + " has no active body!");
/** * Retrieve the SootMethod equivalent of this method * * @return the SootMethod of this method */ public SootMethod makeSootMethod(final Method method) { int accessFlags = method.getAccessFlags(); // get the name of the method String name = method.getName(); List<SootClass> thrownExceptions = getThrownExceptions(method); List<Type> parameterTypes = getParameterTypes(method); // retrieve the return type of this method Type returnType = DexType.toSoot(method.getReturnType()); // Build soot method by all available parameters SootMethod sm = declaringClass.getMethodUnsafe(name, parameterTypes, returnType); if (sm == null) { sm = Scene.v().makeSootMethod(name, parameterTypes, returnType, accessFlags, thrownExceptions); } // if the method is abstract or native, no code needs to be transformed int flags = method.getAccessFlags(); if (Modifier.isAbstract(flags) || Modifier.isNative(flags)) { return sm; } if (Options.v().oaat() && declaringClass.resolvingLevel() <= SootClass.SIGNATURES) { return sm; } // sets the method source by adding its body as the active body sm.setSource(createMethodSource(method)); return sm; }
if (Modifier.isNative(modVal) && host instanceof SootMethod) { modifier |= Opcodes.ACC_NATIVE;
/** * Convenience method returning true if this method is native. */ public boolean isNative() { return Modifier.isNative(this.getModifiers()); }
/** * Convenience method returning true if this method is native. */ public boolean isNative() { return Modifier.isNative(this.getModifiers()); }
buffer.append("synchronized "); if(isNative(m)) buffer.append("native ");
buffer.append("synchronized "); if(isNative(m)) buffer.append("native ");
&& !Modifier.isNative(method.getModifiers())) { if (!method.hasActiveBody()) throw new RuntimeException(
&& !Modifier.isNative(method.getModifiers())) { if (!method.hasActiveBody()) throw new RuntimeException(