+ }
+else
+ can = false;
+/*------ inline statistics ------*/
+if ((!opt_stat) || can) return can;
+
+if (!can) {
+ bool mult = false;
+
+if (imi->flags & ACC_NATIVE) return can;
+if (imi->flags & ACC_ABSTRACT) return can;
+#if defined(ENABLE_STATISTICS)
+ count_in_rejected++;
+#endif
+ if (opt_verbose)
+ {char logtext[MAXLOGTEXT];
+ sprintf(logtext, "Rejected to inline: ");
+ utf_sprint(logtext +strlen(logtext), imi->class->name);
+ strcpy(logtext + strlen(logtext), ".");
+ utf_sprint(logtext + strlen(logtext), imi->name);
+ utf_sprint(logtext + strlen(logtext), imi->descriptor);
+ log_text(logtext);
+ METHINFOj(imi)
+ }
+
+ if (!(inlineoutsiders) && (m->class->name != imr->classref->name)) {
+ /*** if ((!mult) && (whycannot > 0)) mult = true; *** First time not needed ***/
+#if defined(ENABLE_STATISTICS)
+ count_in_outsiders++;
+#endif
+ whycannot = whycannot | IN_OUTSIDERS; /* outsider */
+ }
+ if (inline_env->cummethods >= INLINING_MAXMETHODS) {
+ if ((!mult) && (whycannot > 0)) mult = true;
+#if defined(ENABLE_STATISTICS)
+ count_in_maxDepth++;
+#endif
+ whycannot = whycannot | IN_MAXDEPTH;
+ }
+ if (imi->jcodelength >= INLINING_MAXCODESIZE) {
+ if ((!mult) && (whycannot > 0)) mult = true;
+ whycannot = whycannot | IN_MAXCODE;
+ }
+ if (imi->jcodelength > 0) {
+ if ((!mult) && (whycannot > 0)) mult = true;
+ whycannot = whycannot | IN_JCODELENGTH;
+ }
+ if (!inlineexceptions && (imi->exceptiontablelength == 0)) {
+ whycannot = whycannot | IN_EXCEPTION;
+ }
+ /* These must be last so mult flag is set correctly */
+ if ( (inlinevirtuals) &&
+ ((opcode == JAVA_INVOKEVIRTUAL) ||
+ (opcode == JAVA_INVOKEINTERFACE)) ) {
+ if (uniqueVirt ) {
+ /* so know why (and that) a unique virtual was rejected for another reason */
+ if (opcode == JAVA_INVOKEVIRTUAL) {
+#if defined(ENABLE_STATISTICS)
+ count_in_uniqueVirt_not_inlined++;
+#endif
+ whycannot = whycannot | IN_UNIQUEVIRT;
+ }
+ else {
+#if defined(ENABLE_STATISTICS)
+ count_in_uniqueInterface_not_inlined++;
+#endif
+ whycannot = whycannot | IN_UNIQUE_INTERFACE;
+ }
+ }
+ else { /* not inlined because not not virtual */
+ if ((!mult) && (whycannot > 0)) mult = true;
+ if (opcode == JAVA_INVOKEVIRTUAL) {
+ whycannot = whycannot | IN_NOT_UNIQUE_VIRT;
+ }
+ else {
+ whycannot = whycannot | IN_NOT_UNIQUE_INTERFACE;
+ }
+ }
+ }
+
+ if (inlineoutsiders && (m->class->name != imr->classref->name)) {
+ whycannot = whycannot | IN_OUTSIDERS; /* outsider */
+#if defined(ENABLE_STATISTICS)
+ count_in_outsiders++;
+#endif
+ }