Skip to content

Commit

Permalink
split stack into value stack and control stack
Browse files Browse the repository at this point in the history
  • Loading branch information
CharlieTap committed Jan 23, 2025
1 parent e033142 commit 35c4735
Show file tree
Hide file tree
Showing 309 changed files with 778 additions and 3,844 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import io.github.charlietap.chasm.fixture.executor.runtime.instance.memoryInstan
import io.github.charlietap.chasm.fixture.executor.runtime.instance.moduleInstance
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.f32LoadRuntimeInstruction
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.runtimeMemArg
import io.github.charlietap.chasm.fixture.executor.runtime.stack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.cstack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.frame
import io.github.charlietap.chasm.fixture.executor.runtime.store
import io.github.charlietap.chasm.fixture.executor.runtime.value.i32
Expand All @@ -38,7 +38,7 @@ import kotlinx.benchmark.Warmup
class F32LoadInstructionBenchmark {

private val context = executionContext(
stack = stack(),
cstack = cstack(),
store = store(),
instance = moduleInstance(),
)
Expand Down Expand Up @@ -66,22 +66,22 @@ class F32LoadInstructionBenchmark {
fun setup() {
context.apply {
instance.memAddresses.add(0, memoryAddress(0))
stack.push(frame)
cstack.push(frame)
store.memories.add(0, memoryInstance)
}
}

@TearDown
fun cleanup() {
context.stack.clear()
context.cstack.clear()
context.store.memories.clear()
}

@Benchmark
fun benchmark(blackhole: Blackhole) {
context.stack.push(baseAddress)
context.vstack.push(baseAddress)
val result = F32LoadExecutor(context, instruction)
context.stack.clearValues()
context.vstack.clear()
blackhole.consume(result)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import io.github.charlietap.chasm.fixture.executor.runtime.instance.memoryInstan
import io.github.charlietap.chasm.fixture.executor.runtime.instance.moduleInstance
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.f32StoreRuntimeInstruction
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.runtimeMemArg
import io.github.charlietap.chasm.fixture.executor.runtime.stack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.cstack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.frame
import io.github.charlietap.chasm.fixture.executor.runtime.store
import io.github.charlietap.chasm.fixture.executor.runtime.value.f32
Expand All @@ -39,7 +39,7 @@ import kotlinx.benchmark.Warmup
class F32StoreInstructionBenchmark {

private val context = executionContext(
stack = stack(),
cstack = cstack(),
store = store(),
instance = moduleInstance(),
)
Expand Down Expand Up @@ -68,23 +68,23 @@ class F32StoreInstructionBenchmark {
fun setup() {
context.apply {
instance.memAddresses.add(0, memoryAddress(0))
stack.push(frame)
cstack.push(frame)
store.memories.add(0, memoryInstance)
}
}

@TearDown
fun cleanup() {
context.stack.clear()
context.cstack.clear()
context.store.memories.clear()
}

@Benchmark
fun benchmark(blackhole: Blackhole) {
context.stack.push(baseAddress)
context.stack.push(value)
context.vstack.push(baseAddress)
context.vstack.push(value)
val result = F32StoreExecutor(context, instruction)
context.stack.clearValues()
context.vstack.clear()
blackhole.consume(result)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import io.github.charlietap.chasm.fixture.executor.runtime.instance.memoryInstan
import io.github.charlietap.chasm.fixture.executor.runtime.instance.moduleInstance
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.f64LoadRuntimeInstruction
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.runtimeMemArg
import io.github.charlietap.chasm.fixture.executor.runtime.stack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.cstack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.frame
import io.github.charlietap.chasm.fixture.executor.runtime.store
import io.github.charlietap.chasm.fixture.executor.runtime.value.i32
Expand All @@ -38,7 +38,7 @@ import kotlinx.benchmark.Warmup
class F64LoadInstructionBenchmark {

private val context = executionContext(
stack = stack(),
cstack = cstack(),
store = store(),
instance = moduleInstance(),
)
Expand Down Expand Up @@ -66,22 +66,22 @@ class F64LoadInstructionBenchmark {
fun setup() {
context.apply {
instance.memAddresses.add(0, memoryAddress(0))
stack.push(frame)
cstack.push(frame)
store.memories.add(0, memoryInstance)
}
}

@TearDown
fun cleanup() {
context.stack.clear()
context.cstack.clear()
context.store.memories.clear()
}

@Benchmark
fun benchmark(blackhole: Blackhole) {
context.stack.push(baseAddress)
context.vstack.push(baseAddress)
val result = F64LoadExecutor(context, instruction)
context.stack.clearValues()
context.vstack.clear()
blackhole.consume(result)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import io.github.charlietap.chasm.fixture.executor.runtime.instance.memoryInstan
import io.github.charlietap.chasm.fixture.executor.runtime.instance.moduleInstance
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.f64StoreRuntimeInstruction
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.runtimeMemArg
import io.github.charlietap.chasm.fixture.executor.runtime.stack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.cstack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.frame
import io.github.charlietap.chasm.fixture.executor.runtime.store
import io.github.charlietap.chasm.fixture.executor.runtime.value.f64
Expand All @@ -39,7 +39,7 @@ import kotlinx.benchmark.Warmup
class F64StoreInstructionBenchmark {

private val context = executionContext(
stack = stack(),
cstack = cstack(),
store = store(),
instance = moduleInstance(),
)
Expand Down Expand Up @@ -68,23 +68,23 @@ class F64StoreInstructionBenchmark {
fun setup() {
context.apply {
instance.memAddresses.add(0, memoryAddress(0))
stack.push(frame)
cstack.push(frame)
store.memories.add(0, memoryInstance)
}
}

@TearDown
fun cleanup() {
context.stack.clear()
context.cstack.clear()
context.store.memories.clear()
}

@Benchmark
fun benchmark(blackhole: Blackhole) {
context.stack.push(baseAddress)
context.stack.push(value)
context.vstack.push(baseAddress)
context.vstack.push(value)
val result = F64StoreExecutor(context, instruction)
context.stack.clearValues()
context.vstack.clear()
blackhole.consume(result)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import io.github.charlietap.chasm.fixture.executor.runtime.instance.memoryInstan
import io.github.charlietap.chasm.fixture.executor.runtime.instance.moduleInstance
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.i32Load8SRuntimeInstruction
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.runtimeMemArg
import io.github.charlietap.chasm.fixture.executor.runtime.stack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.cstack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.frame
import io.github.charlietap.chasm.fixture.executor.runtime.store
import io.github.charlietap.chasm.fixture.executor.runtime.value.i32
Expand All @@ -38,7 +38,7 @@ import kotlinx.benchmark.Warmup
class I32Load8SInstructionBenchmark {

private val context = executionContext(
stack = stack(),
cstack = cstack(),
store = store(),
instance = moduleInstance(),
)
Expand Down Expand Up @@ -66,22 +66,22 @@ class I32Load8SInstructionBenchmark {
fun setup() {
context.apply {
instance.memAddresses.add(0, memoryAddress(0))
stack.push(frame)
cstack.push(frame)
store.memories.add(0, memoryInstance)
}
}

@TearDown
fun cleanup() {
context.stack.clear()
context.cstack.clear()
context.store.memories.clear()
}

@Benchmark
fun benchmark(blackhole: Blackhole) {
context.stack.push(baseAddress)
context.vstack.push(baseAddress)
val result = I32Load8SExecutor(context, instruction)
context.stack.clearValues()
context.vstack.clear()
blackhole.consume(result)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import io.github.charlietap.chasm.fixture.executor.runtime.instance.memoryInstan
import io.github.charlietap.chasm.fixture.executor.runtime.instance.moduleInstance
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.i32Load8URuntimeInstruction
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.runtimeMemArg
import io.github.charlietap.chasm.fixture.executor.runtime.stack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.cstack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.frame
import io.github.charlietap.chasm.fixture.executor.runtime.store
import io.github.charlietap.chasm.fixture.executor.runtime.value.i32
Expand All @@ -38,7 +38,7 @@ import kotlinx.benchmark.Warmup
class I32Load8UInstructionBenchmark {

private val context = executionContext(
stack = stack(),
cstack = cstack(),
store = store(),
instance = moduleInstance(),
)
Expand Down Expand Up @@ -66,22 +66,22 @@ class I32Load8UInstructionBenchmark {
fun setup() {
context.apply {
instance.memAddresses.add(0, memoryAddress(0))
stack.push(frame)
cstack.push(frame)
store.memories.add(0, memoryInstance)
}
}

@TearDown
fun cleanup() {
context.stack.clear()
context.cstack.clear()
context.store.memories.clear()
}

@Benchmark
fun benchmark(blackhole: Blackhole) {
context.stack.push(baseAddress)
context.vstack.push(baseAddress)
val result = I32Load8UExecutor(context, instruction)
context.stack.clearValues()
context.vstack.clear()
blackhole.consume(result)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import io.github.charlietap.chasm.fixture.executor.runtime.instance.memoryInstan
import io.github.charlietap.chasm.fixture.executor.runtime.instance.moduleInstance
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.i32LoadRuntimeInstruction
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.runtimeMemArg
import io.github.charlietap.chasm.fixture.executor.runtime.stack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.cstack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.frame
import io.github.charlietap.chasm.fixture.executor.runtime.store
import io.github.charlietap.chasm.fixture.executor.runtime.value.i32
Expand All @@ -38,7 +38,7 @@ import kotlinx.benchmark.Warmup
class I32LoadInstructionBenchmark {

private val context = executionContext(
stack = stack(),
cstack = cstack(),
store = store(),
instance = moduleInstance(),
)
Expand Down Expand Up @@ -66,22 +66,22 @@ class I32LoadInstructionBenchmark {
fun setup() {
context.apply {
instance.memAddresses.add(0, memoryAddress(0))
stack.push(frame)
cstack.push(frame)
store.memories.add(0, memoryInstance)
}
}

@TearDown
fun cleanup() {
context.stack.clear()
context.cstack.clear()
context.store.memories.clear()
}

@Benchmark
fun benchmark(blackhole: Blackhole) {
context.stack.push(baseAddress)
context.vstack.push(baseAddress)
val result = I32LoadExecutor(context, instruction)
context.stack.clearValues()
context.vstack.clear()
blackhole.consume(result)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import io.github.charlietap.chasm.fixture.executor.runtime.instance.memoryInstan
import io.github.charlietap.chasm.fixture.executor.runtime.instance.moduleInstance
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.i32Store8RuntimeInstruction
import io.github.charlietap.chasm.fixture.executor.runtime.instruction.runtimeMemArg
import io.github.charlietap.chasm.fixture.executor.runtime.stack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.cstack
import io.github.charlietap.chasm.fixture.executor.runtime.stack.frame
import io.github.charlietap.chasm.fixture.executor.runtime.store
import io.github.charlietap.chasm.fixture.executor.runtime.value.i32
Expand All @@ -38,7 +38,7 @@ import kotlinx.benchmark.Warmup
class I32Store8InstructionBenchmark {

private val context = executionContext(
stack = stack(),
cstack = cstack(),
store = store(),
instance = moduleInstance(),
)
Expand Down Expand Up @@ -67,23 +67,23 @@ class I32Store8InstructionBenchmark {
fun setup() {
context.apply {
instance.memAddresses.add(0, memoryAddress(0))
stack.push(frame)
cstack.push(frame)
store.memories.add(0, memoryInstance)
}
}

@TearDown
fun cleanup() {
context.stack.clear()
context.cstack.clear()
context.store.memories.clear()
}

@Benchmark
fun benchmark(blackhole: Blackhole) {
context.stack.push(baseAddress)
context.stack.push(value)
context.vstack.push(baseAddress)
context.vstack.push(value)
val result = I32Store8Executor(context, instruction)
context.stack.clearValues()
context.vstack.clear()
blackhole.consume(result)
}
}
Loading

0 comments on commit 35c4735

Please sign in to comment.