LINUX.ORG.RU

Re: java, узнать откуда выполнен вызов функции

Это обязательно нужно в процессе исполнения программы? Ибо в эклипсе есть модный пункт меню "Open call hierarcy".

gaa ★★ ()

Re: java, узнать откуда выполнен вызов функции

(require 'sb-introspect)

(defun a (x)
  (print x))

(defun b ()
  (a))

(sb-introspect::who-calls 'a) 

=> ((B
  . #S(SB-INTROSPECT:DEFINITION-SOURCE
       :PATHNAME NIL
       :FORM-PATH (0 2 1 3 2)
       :CHARACTER-OFFSET 0
       :FILE-WRITE-DATE NIL
       :PLIST NIL
       :DESCRIPTION NIL)))

mv ★★★★★ ()

Re: java, узнать откуда выполнен вызов функции

>Т.е. возможности сделать такую штуку в рантайме в джаве нет?

В лоб - нет, ИМХО, язык-то статический.

На практике - можно, но нужно копаться в потрохах JVM. Я не возился с этим.

KRoN73 ★★★★★ ()

Re: java, узнать откуда выполнен вызов функции

>В принципе, да, в джаве не нужно: там нет возможности генерить код на ходу.

Есть, но не средствами JDK :) Никто не мешает собирать байткод в любом виде, скажем, через тот же asm. Да и, если руки дойдут, у меня JBForth2 будет байткод генерить. Т.е. и на лету в т.ч.

KRoN73 ★★★★★ ()

Re: java, узнать откуда выполнен вызов функции

>Если сделаешь метаобъектный протокол для всего языка

Это та фигня, которая процесс тормозит. Хочется и рыбку^W классы Java-совместимые генерить, и все возможности Форт-идеологии оставить (100% совместимости с Фортом и сейчас нет - скажем, во всех классических словах работа со строками с ( uaddr length ) заменена на (String) и т.п.).

Скорее всего придётся основной («глобальный») поток исполнения на Форте делать не реально глобальным, а потоком внутри класса. И, вообще, чистую интерпретацию входного потока переделывать в компиляцию + исполнение.

KRoN73 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.