mirror of
https://github.com/ParkerTenBroeck/coroutines.git
synced 2026-06-06 21:00:35 -04:00
worked on fixed incorrect assumptions about how stack map entires function
This commit is contained in:
parent
f52827f97b
commit
0ad439c4d6
6 changed files with 57 additions and 49 deletions
|
|
@ -72,49 +72,58 @@ public class Examples {
|
||||||
// return Gen.ret();
|
// return Gen.ret();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
public static Future<String> awaitTest2(int number){
|
// public static Future<String> awaitTest2(int number){
|
||||||
((Future<?>)new Delay(number)).await();
|
// ((Future<?>)new Delay(number)).await();
|
||||||
return Future.ret(number+"ms");
|
// return Future.ret(number+"ms");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// public Future<Integer> number(int value){
|
||||||
|
// Waker.waker().wake();
|
||||||
|
// Future.yield();
|
||||||
|
// return Future.ret(value);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public static Future<Void> send(ByteBuffer buffer, Socket socket){
|
||||||
|
// String message = "hello world!\n";
|
||||||
|
// buffer.limit(message.length()).put(message.getBytes(StandardCharsets.UTF_8)).position(0);
|
||||||
|
// var wrote = socket.write_all(buffer).await();
|
||||||
|
// buffer.clear().limit(wrote);
|
||||||
|
// var read = socket.read_all(buffer).await();
|
||||||
|
// System.out.println(new String(buffer.array(), 0, read));
|
||||||
|
//
|
||||||
|
// return Future.ret(null);
|
||||||
|
// }
|
||||||
|
|
||||||
public Future<Integer> number(int value){
|
public static Future<Void> forever(Socket socket){
|
||||||
Waker.waker().wake();
|
|
||||||
Future.yield();
|
|
||||||
return Future.ret(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Future<Void> send(ByteBuffer buffer, Socket socket){
|
|
||||||
String message = "hello world!\n";
|
|
||||||
buffer.limit(message.length()).put(message.getBytes(StandardCharsets.UTF_8)).position(0);
|
|
||||||
var wrote = socket.write_all(buffer).await();
|
|
||||||
buffer.clear().limit(wrote);
|
|
||||||
var read = socket.read_all(buffer).await();
|
|
||||||
System.out.println(new String(buffer.array(), 0, read));
|
|
||||||
|
|
||||||
return Future.ret(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Future<String> awaitTest(int number){
|
|
||||||
// var result = number(10).await()+number(20).await();
|
|
||||||
// Jokio.runtime().await().spawn(awaitTest2(5000));
|
|
||||||
|
|
||||||
var buffer = ByteBuffer.allocate(500);
|
var buffer = ByteBuffer.allocate(500);
|
||||||
try(var socket = Socket.connect(new InetSocketAddress("45.79.112.203", 4242)).await()){
|
while(true){
|
||||||
send(buffer, socket).await();
|
// send(buffer, socket).await();
|
||||||
} catch (Exception e) {
|
((Future<?>)new Delay(1000 + buffer.get())).await();
|
||||||
throw new RuntimeException(e);
|
System.out.println(socket);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Future.ret("");
|
// public Future<String> awaitTest(int number){
|
||||||
}
|
//// var result = number(10).await()+number(20).await();
|
||||||
|
//// Jokio.runtime().await().spawn(awaitTest2(5000));
|
||||||
|
//
|
||||||
|
// try(var socket = Socket.connect(new InetSocketAddress("45.79.112.203", 4242)).await()){
|
||||||
|
// forever(socket).await();
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
//// throw new RuntimeException(e);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return Future.ret("");
|
||||||
|
// }
|
||||||
|
|
||||||
public Future<String> closing(int number){
|
// public Future<String> closing(int number){
|
||||||
try(var m = new Meow()){
|
// try(var m = new Meow()){
|
||||||
var result = awaitTest2(number).await();
|
// var result = awaitTest2(number).await();
|
||||||
return Future.ret(result);
|
// return Future.ret(result);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public static class Meow implements AutoCloseable{
|
public static class Meow implements AutoCloseable{
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ public class Main implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
void await(){
|
void await(){
|
||||||
new Jokio().blocking(new Examples().awaitTest(2000));
|
new Jokio().blocking(Examples.forever(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -471,6 +471,7 @@ public class FrameTracker {
|
||||||
public void encounterLabel(Label l) {
|
public void encounterLabel(Label l) {
|
||||||
var tmp = stackMapFrames.get(l);
|
var tmp = stackMapFrames.get(l);
|
||||||
if (tmp != null) {
|
if (tmp != null) {
|
||||||
|
// if(tmp.frameType()==252)
|
||||||
stack.clear();
|
stack.clear();
|
||||||
locals.clear();
|
locals.clear();
|
||||||
for( var sl : tmp.stack())
|
for( var sl : tmp.stack())
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
package generator.runtime;
|
|
||||||
|
|
||||||
public class SavedStateHelper {
|
|
||||||
}
|
|
||||||
|
|
@ -25,7 +25,7 @@ public class SavedStateTracker {
|
||||||
}
|
}
|
||||||
|
|
||||||
var s = new StackState(name, desc);
|
var s = new StackState(name, desc);
|
||||||
saved.add(s);
|
saved.addFirst(s);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -53,6 +53,6 @@ public class SavedStateTracker {
|
||||||
|
|
||||||
public void restore_all(StateMachineBuilder smb, CodeBuilder cob) {
|
public void restore_all(StateMachineBuilder smb, CodeBuilder cob) {
|
||||||
while(!saved.isEmpty())
|
while(!saved.isEmpty())
|
||||||
restore(smb, cob, saved.getLast());
|
restore(smb, cob, saved.getFirst());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,10 +72,12 @@ public abstract class StateMachineBuilder {
|
||||||
|
|
||||||
System.out.println("FRAME");
|
System.out.println("FRAME");
|
||||||
var lt = new FrameTracker(this, src_com);
|
var lt = new FrameTracker(this, src_com);
|
||||||
|
int bco = 0;
|
||||||
for(var coe : src_com){
|
for(var coe : src_com){
|
||||||
if(coe instanceof Instruction) {
|
if(coe instanceof Instruction i) {
|
||||||
frames.add(new Frame(lt.locals(), lt.stack()));
|
frames.add(new Frame(lt.locals(), lt.stack()));
|
||||||
System.out.println(frames.getLast() + " " + coe);
|
System.out.println(bco + " " + frames.getLast() + " " + coe);
|
||||||
|
bco += i.sizeInBytes();
|
||||||
}
|
}
|
||||||
lt.encounter(coe);
|
lt.encounter(coe);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue