Заставить всю 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', но она имеет обратный эффект к тому, что вы хотите.)
Ссылка: