我正在生成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