我正在生成Java代碼,然後將被編譯並加載回來。我的問題是,我基本上需要跳轉,因爲當我從函數返回時,我希望從點繼續執行在我已經離開的環路中。希望這裏的代碼能夠說明我的願望。雖然實際的代碼也會有一些ifs,並且會更深入。生成Java源代碼和跳轉
MyIter a,b,c;
boolean func() {
jump to correct state here
state0:
a = ...;
while (a.next()) {
state1: while (b.next()) {
return true; // start again at state1
}
b = ...;
}
c = ...;
state2:
while (c.next()) {
return true; // start again at state2
}
return false;
}
在C我可能會使用跳轉表和狀態變量。性能是關鍵,代碼與Java應用程序交互。
我最好的猜測,到目前爲止已經:
- 翻轉循環和邏輯的嵌套。這變得太麻煩和有問題。
- 添加邏輯以允許流回到原來的位置,但這可能很麻煩。
- 我認爲字節碼可以跳,所以我可以生成字節碼自己,但似乎並不理想(是對此有任何好的圖書館?)
- 延續傳遞風格來避免返回,但會涉及到重大重組,但目前可能的路要走。
我想知道如果有人有任何想法?
我想你就會有一個硬的時間做跳躍,即使在字節碼 - 驗證有各種的規則使得字節碼比你想像的要靈活得多。 – 2011-01-08 21:17:32