Skip to content

Commit 2e5730c

Browse files
committed
extract execution bootstrap for script calls
1 parent 44e9a9e commit 2e5730c

3 files changed

Lines changed: 29 additions & 21 deletions

File tree

docs/architecture.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Key files:
2323
- `vibes/execution_assign.go` (assignment targets and member assignment flow)
2424
- `vibes/execution_script.go` (script call surface and call-time orchestration)
2525
- `vibes/execution_script_helpers.go` (compiled script lookup/order/ownership and call-time cloning helpers)
26+
- `vibes/execution_call_execution.go` (execution struct bootstrap for script calls)
2627
- `vibes/execution_call_capabilities.go` (call-time capability binding and contract registration)
2728
- `vibes/execution_call_classes.go` (call-time class body initialization in class-local scope)
2829
- `vibes/execution_function_args.go` (function argument/default/type/ivar binding helpers)

vibes/execution_call_execution.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package vibes
2+
3+
import "context"
4+
5+
func newExecutionForCall(script *Script, ctx context.Context, root *Env, opts CallOptions) *Execution {
6+
return &Execution{
7+
engine: script.engine,
8+
script: script,
9+
ctx: ctx,
10+
quota: script.engine.config.StepQuota,
11+
memoryQuota: script.engine.config.MemoryQuotaBytes,
12+
recursionCap: script.engine.config.RecursionLimit,
13+
callStack: make([]callFrame, 0, 8),
14+
root: root,
15+
modules: make(map[string]Value),
16+
moduleLoading: make(map[string]bool),
17+
moduleLoadStack: make([]string, 0, 8),
18+
moduleStack: make([]moduleContext, 0, 8),
19+
capabilityContracts: make(map[*Builtin]CapabilityMethodContract),
20+
capabilityContractScopes: make(map[*Builtin]*capabilityContractScope),
21+
capabilityContractsByName: make(map[string]CapabilityMethodContract),
22+
receiverStack: make([]Value, 0, 8),
23+
envStack: make([]*Env, 0, 8),
24+
strictEffects: script.engine.config.StrictEffects,
25+
allowRequire: opts.AllowRequire,
26+
}
27+
}

vibes/execution_script.go

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,27 +35,7 @@ func (s *Script) Call(ctx context.Context, name string, args []Value, opts CallO
3535
}
3636
rebinder := newCallFunctionRebinder(s, root, callClasses)
3737

38-
exec := &Execution{
39-
engine: s.engine,
40-
script: s,
41-
ctx: ctx,
42-
quota: s.engine.config.StepQuota,
43-
memoryQuota: s.engine.config.MemoryQuotaBytes,
44-
recursionCap: s.engine.config.RecursionLimit,
45-
callStack: make([]callFrame, 0, 8),
46-
root: root,
47-
modules: make(map[string]Value),
48-
moduleLoading: make(map[string]bool),
49-
moduleLoadStack: make([]string, 0, 8),
50-
moduleStack: make([]moduleContext, 0, 8),
51-
capabilityContracts: make(map[*Builtin]CapabilityMethodContract),
52-
capabilityContractScopes: make(map[*Builtin]*capabilityContractScope),
53-
capabilityContractsByName: make(map[string]CapabilityMethodContract),
54-
receiverStack: make([]Value, 0, 8),
55-
envStack: make([]*Env, 0, 8),
56-
strictEffects: s.engine.config.StrictEffects,
57-
allowRequire: opts.AllowRequire,
58-
}
38+
exec := newExecutionForCall(s, ctx, root, opts)
5939

6040
if err := bindCapabilitiesForCall(exec, root, rebinder, opts.Capabilities); err != nil {
6141
return NewNil(), err

0 commit comments

Comments
 (0)