Procházet zdrojové kódy

разбираюсь с выгрузкой/загрузкой параметров процедур и методов

kpmy před 10 roky
rodič
revize
87a91dbdd6
30 změnil soubory, kde provedl 12 přidání a 4 odebrání
  1. binární
      code/XevConsole.oz
  2. binární
      code/XevCore.oz
  3. binární
      code/XevDemo0.oz
  4. binární
      code/XevDemo1.oz
  5. binární
      code/XevDemo10.oz
  6. binární
      code/XevDemo11.oz
  7. binární
      code/XevDemo12.oz
  8. binární
      code/XevDemo13.oz
  9. binární
      code/XevDemo14.oz
  10. binární
      code/XevDemo15.oz
  11. binární
      code/XevDemo16.oz
  12. binární
      code/XevDemo17.oz
  13. binární
      code/XevDemo18.oz
  14. binární
      code/XevDemo19.oz
  15. binární
      code/XevDemo20.oz
  16. binární
      code/XevDemo3.oz
  17. binární
      code/XevDemo4.oz
  18. binární
      code/XevDemo5.oz
  19. binární
      code/XevDemo6.oz
  20. binární
      code/XevDemo7.oz
  21. binární
      code/XevDemo8.oz
  22. binární
      code/XevDemo9.oz
  23. binární
      code/XevInit.oz
  24. binární
      code/XevLog.oz
  25. binární
      code/XevStrings.oz
  26. binární
      code/XevTest0.oz
  27. binární
      code/XevXLog.oz
  28. 3 3
      rt2/rules/assign.go
  29. 1 0
      rt2/rules/call.go
  30. 8 1
      rt2/scope/modern/ms.go

binární
code/XevConsole.oz


binární
code/XevCore.oz


binární
code/XevDemo0.oz


binární
code/XevDemo1.oz


binární
code/XevDemo10.oz


binární
code/XevDemo11.oz


binární
code/XevDemo12.oz


binární
code/XevDemo13.oz


binární
code/XevDemo14.oz


binární
code/XevDemo15.oz


binární
code/XevDemo16.oz


binární
code/XevDemo17.oz


binární
code/XevDemo18.oz


binární
code/XevDemo19.oz


binární
code/XevDemo20.oz


binární
code/XevDemo3.oz


binární
code/XevDemo4.oz


binární
code/XevDemo5.oz


binární
code/XevDemo6.oz


binární
code/XevDemo7.oz


binární
code/XevDemo8.oz


binární
code/XevDemo9.oz


binární
code/XevInit.oz


binární
code/XevLog.oz


binární
code/XevStrings.oz


binární
code/XevTest0.oz


binární
code/XevXLog.oz


+ 3 - 3
rt2/rules/assign.go

@@ -116,7 +116,7 @@ func assignSeq(f frame.Frame) (seq frame.Sequence, ret frame.WAIT) {
 		case node.FieldNode:
 			rt2.Push(rt2.New(l), f)
 			rt2.Assert(f, func(f frame.Frame) (bool, int) {
-				return rt2.ValueOf(f)[l.Adr()] != nil, 62
+				return rt2.ValueOf(f)[l.Adr()] != nil, 63
 			})
 			seq = func(f frame.Frame) (frame.Sequence, frame.WAIT) {
 				left = rt2.ValueOf(f)[l.Adr()]
@@ -126,7 +126,7 @@ func assignSeq(f frame.Frame) (seq frame.Sequence, ret frame.WAIT) {
 		case node.IndexNode:
 			rt2.Push(rt2.New(a.Left()), f)
 			rt2.Assert(f, func(f frame.Frame) (bool, int) {
-				return rt2.ValueOf(f)[l.Adr()] != nil, 63
+				return rt2.ValueOf(f)[l.Adr()] != nil, 64
 			})
 			seq = func(f frame.Frame) (seq frame.Sequence, ret frame.WAIT) {
 				sc := f.Domain().Discover(context.SCOPE).(scope.Manager)
@@ -141,7 +141,7 @@ func assignSeq(f frame.Frame) (seq frame.Sequence, ret frame.WAIT) {
 			rt2.Push(rt2.New(a.Left()), f)
 			rt2.Assert(f, func(f frame.Frame) (bool, int) {
 				ok := rt2.ValueOf(f)[l.Adr()] != nil
-				return ok, 64
+				return ok, 65
 			})
 			seq = func(f frame.Frame) (frame.Sequence, frame.WAIT) {
 				left = rt2.ValueOf(f)[a.Left().Adr()]

+ 1 - 0
rt2/rules/call.go

@@ -187,6 +187,7 @@ func callSeq(f frame.Frame) (seq frame.Sequence, ret frame.WAIT) {
 					})
 					assert.For(fn != nil, 40)
 					proc := m.NodeByObject(fn)
+					assert.For(proc != nil, 40)
 					call(proc[0], nil)
 					panic(0)
 				default:

+ 8 - 1
rt2/scope/modern/ms.go

@@ -159,11 +159,18 @@ func (a *salloc) Allocate(n node.Node, final bool) {
 			}
 		}
 	}
+	ol := mod.Objects[n]
+	switch o := n.Object().(type) {
+	case object.ProcedureObject:
+		for l := o.Link(); l != nil; l = l.Link() {
+			ol = append(ol, l)
+		}
 
+	}
 	nl := newlvl()
 	nl.ready = final
 	a.area.data = append(a.area.data, nl)
-	nl.alloc(mod, n, mod.Objects[n], skip)
+	nl.alloc(mod, n, ol, skip)
 }
 
 func (a *salloc) Dispose(n node.Node) {