Skip to content

Commit

Permalink
Merge pull request #496 from cbrom/mod/rename_MustDeserialize
Browse files Browse the repository at this point in the history
- MustDeserialize changed to Deserialize
  • Loading branch information
SkycoinSynth committed Mar 8, 2021
2 parents 459ad95 + 0a06cfd commit bd51df8
Show file tree
Hide file tree
Showing 13 changed files with 125 additions and 130 deletions.
26 changes: 13 additions & 13 deletions cx/cxprogram.go
Expand Up @@ -26,18 +26,18 @@ type CXProgram struct {
Packages []*CXPackage // Packages in a CX program

// Runtime information
Inputs []*CXArgument // OS input arguments
Outputs []*CXArgument // outputs to the OS
Memory []byte // Used when running the program
StackSize int // This field stores the size of a CX program's stack
HeapSize int // This field stores the size of a CX program's heap
HeapStartsAt int // Offset at which the heap starts in a CX program's memory
StackPointer int // At what byte the current stack frame is
CallStack []CXCall // Collection of function calls
CallCounter int // What function call is the currently being executed in the CallStack
HeapPointer int // At what offset a CX program can insert a new object to the heap
Terminated bool // Utility field for the runtime. Indicates if a CX program has already finished or not.
Version string // CX version used to build this CX program.
Inputs []*CXArgument // OS input arguments
Outputs []*CXArgument // outputs to the OS
Memory []byte // Used when running the program
StackSize int // This field stores the size of a CX program's stack
HeapSize int // This field stores the size of a CX program's heap
HeapStartsAt int // Offset at which the heap starts in a CX program's memory
StackPointer int // At what byte the current stack frame is
CallStack []CXCall // Collection of function calls
CallCounter int // What function call is the currently being executed in the CallStack
HeapPointer int // At what offset a CX program can insert a new object to the heap
Terminated bool // Utility field for the runtime. Indicates if a CX program has already finished or not.
Version string // CX version used to build this CX program.

// Used by the REPL and parser
CurrentPackage *CXPackage // Represents the currently active package in the REPL or when parsing a CX file.
Expand Down Expand Up @@ -423,7 +423,7 @@ func (prgrm *CXProgram) PrintAllObjects() {
op := prgrm.CallStack[c].Operator

for _, ptr := range op.ListOfPointers {
heapOffset := mustDeserializeI32(prgrm.Memory[fp+ptr.Offset : fp+ptr.Offset+TYPE_POINTER_SIZE])
heapOffset := Deserialize_i32(prgrm.Memory[fp+ptr.Offset : fp+ptr.Offset+TYPE_POINTER_SIZE])

var byts []byte

Expand Down
31 changes: 16 additions & 15 deletions cx/fix_deserialize.go
@@ -1,13 +1,14 @@
package cxcore

import(
import (
"math"

"github.com/skycoin/skycoin/src/cipher/encoder"
)

//TODO: replace with unsafe

func mustDeserializeBool(b []byte) bool {
func DeserializeBool(b []byte) bool {
switch b[0] {
case 0:
return false
Expand All @@ -19,49 +20,49 @@ func mustDeserializeBool(b []byte) bool {
}
}

func mustDeserializeI8(b []byte) int8 {
func Deserialize_i8(b []byte) int8 {
return int8(b[0])
}

func mustDeserializeI16(b []byte) int16 {
func Deserialize_i16(b []byte) int16 {
return int16(b[0]) | int16(b[1])<<8
}

func mustDeserializeI32(b []byte) int32 {
func Deserialize_i32(b []byte) int32 {
return int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24
}

func mustDeserializeI64(b []byte) int64 {
func Deserialize_i64(b []byte) int64 {
return int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 |
int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56
}

func mustDeserializeUI8(b []byte) uint8 {
func Deserialize_ui8(b []byte) uint8 {
return uint8(b[0])
}

func mustDeserializeUI16(b []byte) uint16 {
func Deserialize_ui16(b []byte) uint16 {
return uint16(b[0]) | uint16(b[1])<<8
}

func mustDeserializeUI32(b []byte) uint32 {
func Deserialize_ui32(b []byte) uint32 {
return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
}

func mustDeserializeUI64(b []byte) uint64 {
func Deserialize_ui64(b []byte) uint64 {
return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |
uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
}

func mustDeserializeF32(b []byte) float32 {
return math.Float32frombits(mustDeserializeUI32(b))
func Deserialize_f32(b []byte) float32 {
return math.Float32frombits(Deserialize_ui32(b))
}

func mustDeserializeF64(b []byte) float64 {
return math.Float64frombits(mustDeserializeUI64(b))
func Deserialize_f64(b []byte) float64 {
return math.Float64frombits(Deserialize_ui64(b))
}

func mustDeserializeRaw(byts []byte, item interface{}) {
func DeserializeRaw(byts []byte, item interface{}) {
_, err := encoder.DeserializeRaw(byts, item)
if err != nil {
panic(err)
Expand Down
4 changes: 2 additions & 2 deletions cx/fix_mem2.go
Expand Up @@ -34,7 +34,7 @@ func CalculateDereferences(arg *CXArgument, finalOffset *int, fp int) {

byts = PROGRAM.Memory[*finalOffset : *finalOffset+TYPE_POINTER_SIZE]

offset = mustDeserializeI32(byts)
offset = Deserialize_i32(byts)

*finalOffset = int(offset)

Expand Down Expand Up @@ -72,7 +72,7 @@ func CalculateDereferences(arg *CXArgument, finalOffset *int, fp int) {

byts = PROGRAM.Memory[*finalOffset : *finalOffset+TYPE_POINTER_SIZE]

offset = mustDeserializeI32(byts)
offset = Deserialize_i32(byts)
*finalOffset = int(offset)
}

Expand Down
24 changes: 11 additions & 13 deletions cx/fix_mem4.go
@@ -1,31 +1,29 @@
package cxcore

import()

/*
./cxfx/op_opengl.go:437: obj := ReadMemory(GetFinalOffset(fp, inp1), inp1)
./cx/op_http.go:326: // reqByts := ReadMemory(GetFinalOffset(fp, inp1), inp1)
./cx/op_http.go:493: byts1 := ReadMemory(GetFinalOffset(fp, inp1), inp1)
./cx/fix_read3.go:110: array := ReadMemory(offset, inp)
./cx/fix_read3.go:119: array := ReadMemory(offset, inp)
./cx/fix_read3.go:128: out = mustDeserializeBool(ReadMemory(offset, inp))
./cx/fix_read3.go:128: out = DeserializeBool(ReadMemory(offset, inp))
./cx/op_aff.go:101: return ReadMemory(GetFinalOffset(
./cx/op_und.go:548: obj := ReadMemory(GetFinalOffset(fp, inp2), inp2)
./cx/op_und.go:588: obj := ReadMemory(GetFinalOffset(fp, inp3), inp3)
./cx/execute.go:291: ReadMemory(
./cx/execute.go:424: mem := ReadMemory(GetFinalOffset(newFP, out), out)
./cx/op_testing.go:22: byts1 = ReadMemory(GetFinalOffset(fp, inp1), inp1)
./cx/op_testing.go:23: byts2 = ReadMemory(GetFinalOffset(fp, inp2), inp2)
./cx/fix_read.go:11: return mustDeserializeI8(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:16: return mustDeserializeI16(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:21: return mustDeserializeI32(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:26: return mustDeserializeI64(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:31: return mustDeserializeUI8(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:36: return mustDeserializeUI16(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:41: return mustDeserializeUI32(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:46: return mustDeserializeUI64(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:51: return mustDeserializeF32(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:56: return mustDeserializeF64(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:11: return Deserialize_i8(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:16: return Deserialize_i16(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:21: return Deserialize_i32(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:26: return Deserialize_i64(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:31: return Deserialize_ui8(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:36: return Deserialize_ui16(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:41: return Deserialize_ui32(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:46: return Deserialize_ui64(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:51: return Deserialize_f32(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/fix_read.go:56: return Deserialize_f64(ReadMemory(GetFinalOffset(fp, inp), inp))
./cx/op_misc.go:9: byts := ReadMemory(inpOffset, arg)
./cx/op_misc.go:41: WriteMemory(out1Offset, ReadMemory(inp1Offset, inp1))
./cx/op.go:183:// ReadMemory ...
Expand Down
20 changes: 10 additions & 10 deletions cx/fix_read.go
Expand Up @@ -8,50 +8,50 @@ import()

// ReadI8 ...
func ReadI8(fp int, inp *CXArgument) int8 {
return mustDeserializeI8(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_i8(ReadMemory(GetFinalOffset(fp, inp), inp))
}

// ReadI16 ...
func ReadI16(fp int, inp *CXArgument) int16 {
return mustDeserializeI16(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_i16(ReadMemory(GetFinalOffset(fp, inp), inp))
}

// ReadI32 ...
func ReadI32(fp int, inp *CXArgument) int32 {
return mustDeserializeI32(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_i32(ReadMemory(GetFinalOffset(fp, inp), inp))
}

// ReadI64 ...
func ReadI64(fp int, inp *CXArgument) int64 {
return mustDeserializeI64(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_i64(ReadMemory(GetFinalOffset(fp, inp), inp))
}

// ReadUI8 ...
func ReadUI8(fp int, inp *CXArgument) uint8 {
return mustDeserializeUI8(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_ui8(ReadMemory(GetFinalOffset(fp, inp), inp))
}

// ReadUI16 ...
func ReadUI16(fp int, inp *CXArgument) uint16 {
return mustDeserializeUI16(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_ui16(ReadMemory(GetFinalOffset(fp, inp), inp))
}

// ReadUI32 ...
func ReadUI32(fp int, inp *CXArgument) uint32 {
return mustDeserializeUI32(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_ui32(ReadMemory(GetFinalOffset(fp, inp), inp))
}

// ReadUI64 ...
func ReadUI64(fp int, inp *CXArgument) uint64 {
return mustDeserializeUI64(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_ui64(ReadMemory(GetFinalOffset(fp, inp), inp))
}

// ReadF32 ...
func ReadF32(fp int, inp *CXArgument) float32 {
return mustDeserializeF32(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_f32(ReadMemory(GetFinalOffset(fp, inp), inp))
}

// ReadF64 ...
func ReadF64(fp int, inp *CXArgument) float64 {
return mustDeserializeF64(ReadMemory(GetFinalOffset(fp, inp), inp))
return Deserialize_f64(ReadMemory(GetFinalOffset(fp, inp), inp))
}
24 changes: 10 additions & 14 deletions cx/fix_read2.go
@@ -1,15 +1,13 @@
package cxcore

import()

// ReadData ...

func readDataI8(bytes []byte) (out []int8) {
count := len(bytes)
if count > 0 {
out = make([]int8, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeI8(bytes[i:])
out[i] = Deserialize_i8(bytes[i:])
}
}
return
Expand All @@ -20,7 +18,7 @@ func readDataUI8(bytes []byte) (out []uint8) {
if count > 0 {
out = make([]uint8, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeUI8(bytes[i:])
out[i] = Deserialize_ui8(bytes[i:])
}
}
return
Expand All @@ -31,7 +29,7 @@ func readDataI16(bytes []byte) (out []int16) {
if count > 0 {
out = make([]int16, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeI16(bytes[i*2:])
out[i] = Deserialize_i16(bytes[i*2:])
}
}
return
Expand All @@ -42,7 +40,7 @@ func readDataUI16(bytes []byte) (out []uint16) {
if count > 0 {
out = make([]uint16, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeUI16(bytes[i*2:])
out[i] = Deserialize_ui16(bytes[i*2:])
}
}
return
Expand All @@ -53,7 +51,7 @@ func readDataI32(bytes []byte) (out []int32) {
if count > 0 {
out = make([]int32, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeI32(bytes[i*4:])
out[i] = Deserialize_i32(bytes[i*4:])
}
}
return
Expand All @@ -64,7 +62,7 @@ func readDataUI32(bytes []byte) (out []uint32) {
if count > 0 {
out = make([]uint32, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeUI32(bytes[i*4:])
out[i] = Deserialize_ui32(bytes[i*4:])
}
}
return
Expand All @@ -75,7 +73,7 @@ func readDataI64(bytes []byte) (out []int64) {
if count > 0 {
out = make([]int64, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeI64(bytes[i*8:])
out[i] = Deserialize_i64(bytes[i*8:])
}
}
return
Expand All @@ -86,7 +84,7 @@ func readDataUI64(bytes []byte) (out []uint64) {
if count > 0 {
out = make([]uint64, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeUI64(bytes[i*8:])
out[i] = Deserialize_ui64(bytes[i*8:])
}
}
return
Expand All @@ -97,7 +95,7 @@ func readDataF32(bytes []byte) (out []float32) {
if count > 0 {
out = make([]float32, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeF32(bytes[i*4:])
out[i] = Deserialize_f32(bytes[i*4:])
}
}
return
Expand All @@ -108,10 +106,8 @@ func readDataF64(bytes []byte) (out []float64) {
if count > 0 {
out = make([]float64, count)
for i := 0; i < count; i++ {
out[i] = mustDeserializeF64(bytes[i*8:])
out[i] = Deserialize_f64(bytes[i*8:])
}
}
return
}


12 changes: 6 additions & 6 deletions cx/fix_read3.go
Expand Up @@ -176,7 +176,7 @@ func ReadSliceBytes(fp int, inp *CXArgument, dataType int) []byte {
// ReadBool ...
func ReadBool(fp int, inp *CXArgument) (out bool) {
offset := GetFinalOffset(fp, inp)
out = mustDeserializeBool(ReadMemory(offset, inp))
out = DeserializeBool(ReadMemory(offset, inp))
return
}

Expand All @@ -188,7 +188,7 @@ func ReadStr(fp int, inp *CXArgument) (out string) {
// Then it's a literal.
offset = int32(off)
} else {
offset = mustDeserializeI32(PROGRAM.Memory[off : off+TYPE_POINTER_SIZE])
offset = Deserialize_i32(PROGRAM.Memory[off : off+TYPE_POINTER_SIZE])
}

if offset == 0 {
Expand All @@ -200,11 +200,11 @@ func ReadStr(fp int, inp *CXArgument) (out string) {
// We need to check if the string lives on the data segment or on the
// heap to know if we need to take into consideration the object header's size.
if int(offset) > PROGRAM.HeapStartsAt {
size := mustDeserializeI32(PROGRAM.Memory[offset+OBJECT_HEADER_SIZE : offset+OBJECT_HEADER_SIZE+STR_HEADER_SIZE])
mustDeserializeRaw(PROGRAM.Memory[offset+OBJECT_HEADER_SIZE:offset+OBJECT_HEADER_SIZE+STR_HEADER_SIZE+size], &out)
size := Deserialize_i32(PROGRAM.Memory[offset+OBJECT_HEADER_SIZE : offset+OBJECT_HEADER_SIZE+STR_HEADER_SIZE])
DeserializeRaw(PROGRAM.Memory[offset+OBJECT_HEADER_SIZE:offset+OBJECT_HEADER_SIZE+STR_HEADER_SIZE+size], &out)
} else {
size := mustDeserializeI32(PROGRAM.Memory[offset : offset+STR_HEADER_SIZE])
mustDeserializeRaw(PROGRAM.Memory[offset:offset+STR_HEADER_SIZE+size], &out)
size := Deserialize_i32(PROGRAM.Memory[offset : offset+STR_HEADER_SIZE])
DeserializeRaw(PROGRAM.Memory[offset:offset+STR_HEADER_SIZE+size], &out)
}

return out
Expand Down

0 comments on commit bd51df8

Please sign in to comment.