Skip to content
This repository was archived by the owner on May 13, 2022. It is now read-only.

Commit dbfe3c6

Browse files
committed
Add wasm printMem and other debug functions
Signed-off-by: Sean Young <[email protected]>
1 parent b64774e commit dbfe3c6

File tree

23 files changed

+944
-110
lines changed

23 files changed

+944
-110
lines changed

deploy/jobs/jobs_contracts.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -574,14 +574,17 @@ func deployFinalize(client *def.Client, tx payload.Payload, logger *logging.Logg
574574
}
575575

576576
func logEvents(txe *exec.TxExecution, client *def.Client, logger *logging.Logger) {
577-
if client.AllSpecs == nil {
578-
return
579-
}
580-
581577
for _, event := range txe.Events {
578+
print := event.GetPrint()
579+
580+
if print != nil {
581+
logger.InfoMsg("print", "address", print.Address.String(), "msg", string(print.Data))
582+
continue
583+
}
584+
582585
eventLog := event.GetLog()
583586

584-
if eventLog == nil {
587+
if eventLog == nil || client.AllSpecs == nil {
585588
continue
586589
}
587590

deploy/jobs/jobs_test_jobs.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ func QueryContractJob(query *def.QueryContract, do *def.DeployArgs, script *def.
6969
return "", nil, err
7070
}
7171

72+
logEvents(txe, client, logger)
73+
7274
result2 := util.GetReturnValue(query.Variables, logger)
7375
// Finalize
7476
if result2 != "" {

execution/exec/event.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const (
2424
TypeEnvelope
2525
TypeEndTx
2626
TypeEndBlock
27+
TypePrint
2728
)
2829

2930
var nameFromType = map[EventType]string{

execution/exec/event_sink.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
type EventSink interface {
88
Call(call *CallEvent, exception *errors.Exception) error
99
Log(log *LogEvent) error
10+
Print(print *PrintEvent) error
1011
}
1112

1213
type noopEventSink struct {
@@ -24,6 +25,10 @@ func (es *noopEventSink) Log(log *LogEvent) error {
2425
return nil
2526
}
2627

28+
func (es *noopEventSink) Print(print *PrintEvent) error {
29+
return nil
30+
}
31+
2732
type logFreeEventSink struct {
2833
EventSink
2934
}

execution/exec/events.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,17 @@ func (evs *Events) Log(log *LogEvent) error {
4444
return nil
4545
}
4646

47+
func (evs *Events) Print(print *PrintEvent) error {
48+
evs.Append(&Event{
49+
Header: &Header{
50+
EventType: TypePrint,
51+
EventID: EventStringLogEvent(print.Address),
52+
},
53+
Print: print,
54+
})
55+
return nil
56+
}
57+
4758
func (evs Events) CallTrace() string {
4859
var calls []string
4960
for _, ev := range evs {

execution/exec/exec.pb.go

Lines changed: 374 additions & 85 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

execution/exec/stream_event.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ func (ev *StreamEvent) EventType() EventType {
3535
return TypeEndTx
3636
case ev.EndBlock != nil:
3737
return TypeEndBlock
38+
case ev.Event.Print != nil:
39+
return TypePrint
3840
}
3941
return TypeUnknown
4042
}

execution/exec/tx_execution.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,14 @@ func (txe *TxExecution) GovernAccount(governAccount *GovernAccountEvent, excepti
128128
})
129129
}
130130

131+
func (txe *TxExecution) Print(print *PrintEvent) error {
132+
txe.Append(&Event{
133+
Header: txe.Header(TypePrint, EventStringLogEvent(print.Address), nil),
134+
Print: print,
135+
})
136+
return nil
137+
}
138+
131139
// Errors pushed to TxExecutions end up in merkle state so it is essential that they are deterministic and independent
132140
// of the code path taken to execution (e.g. replay takes a different path to that of normal consensus reactor so stack
133141
// traces may differ - as they may across architectures)

execution/solidity/ewasm.solang

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,8 @@ contract ewasm is E {
4848
function test_events() public {
4949
emit L(102, "Hello from wasm", true);
5050
}
51+
52+
function test_print(int64 arg1, string arg2) public {
53+
print("arg1:{} arg2:{}".format(arg1, arg2));
54+
}
5155
}

execution/solidity/ewasm.solang.go

Lines changed: 2 additions & 2 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)