Заставить всю Java-арифметику к строгому fp во время выполнения, используя javassist?

Учитывая Java-приложение, которое было написано с учетом производительности (т. Е. Методы намеренно не объявляются 'strictfp' в исходном коде), можно ли разрешить пользователям запускать все приложение в режиме strictfp?

Похоже, грубый подход заключается в простом добавлении атрибута "strictfp" ко всем методам всех классов с использованием пользовательского загрузчика классов, написанного с использованием javassist. Это будет похоже на:

http://www.verious.com/qa/no-strictfp-in-scala-workarounds/

Однако загрузчик классов должен будет добавить атрибут strictpf ко всем методам класса в приложении, включая частные. (Приложение просто слишком большое и сложное, чтобы явно перечислить все возможные методы, которые могут требовать атрибут strictfp.)

API отражения в javassist не поддерживает перечисление частных методов:

http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/html/javassist/CtClass.html

Возможно ли то, что я хочу сделать в javassist (или вообще через пользовательский подход к загрузчику классов)?

1 ответ

Я не знаю, поможет ли это вам, но если вы могли бы перейти на использование JVM Oracle JRockit, у него есть опция JVM для включения strictfp глобально - '-XX +: - StrictFP`

(В JVM Hotspot есть опция '-XX +: - UseStrictFP', но она имеет обратный эффект к тому, что вы хотите.)

Ссылка:

Другие вопросы по тегам