avm1: Remove dead code from Avm1
This commit is contained in:
parent
f85684fec0
commit
a2103d906d
|
@ -81,9 +81,6 @@ pub struct Avm1<'gc> {
|
||||||
/// DisplayObject property map.
|
/// DisplayObject property map.
|
||||||
display_properties: GcCell<'gc, stage_object::DisplayPropertyMap<'gc>>,
|
display_properties: GcCell<'gc, stage_object::DisplayPropertyMap<'gc>>,
|
||||||
|
|
||||||
/// All activation records for the current execution context.
|
|
||||||
stack_frames: Vec<GcCell<'gc, Activation<'gc>>>,
|
|
||||||
|
|
||||||
/// The operand stack (shared across functions).
|
/// The operand stack (shared across functions).
|
||||||
stack: Vec<Value<'gc>>,
|
stack: Vec<Value<'gc>>,
|
||||||
|
|
||||||
|
@ -104,7 +101,6 @@ unsafe impl<'gc> gc_arena::Collect for Avm1<'gc> {
|
||||||
self.system_listeners.trace(cc);
|
self.system_listeners.trace(cc);
|
||||||
self.prototypes.trace(cc);
|
self.prototypes.trace(cc);
|
||||||
self.display_properties.trace(cc);
|
self.display_properties.trace(cc);
|
||||||
self.stack_frames.trace(cc);
|
|
||||||
self.stack.trace(cc);
|
self.stack.trace(cc);
|
||||||
|
|
||||||
for register in &self.registers {
|
for register in &self.registers {
|
||||||
|
@ -124,7 +120,6 @@ impl<'gc> Avm1<'gc> {
|
||||||
prototypes,
|
prototypes,
|
||||||
system_listeners,
|
system_listeners,
|
||||||
display_properties: stage_object::DisplayPropertyMap::new(gc_context),
|
display_properties: stage_object::DisplayPropertyMap::new(gc_context),
|
||||||
stack_frames: vec![],
|
|
||||||
stack: vec![],
|
stack: vec![],
|
||||||
registers: [
|
registers: [
|
||||||
Value::Undefined,
|
Value::Undefined,
|
||||||
|
@ -331,27 +326,9 @@ impl<'gc> Avm1<'gc> {
|
||||||
where
|
where
|
||||||
for<'b> F: FnOnce(&mut StackFrame<'b, 'gc>, &mut UpdateContext<'a, 'gc, '_>) -> R,
|
for<'b> F: FnOnce(&mut StackFrame<'b, 'gc>, &mut UpdateContext<'a, 'gc, '_>) -> R,
|
||||||
{
|
{
|
||||||
self.stack_frames.push(activation);
|
|
||||||
let mut stack_frame = StackFrame::new(self, activation);
|
let mut stack_frame = StackFrame::new(self, activation);
|
||||||
// TODO: Handle
|
// TODO: Handle
|
||||||
let result = function(&mut stack_frame, context);
|
function(&mut stack_frame, context)
|
||||||
self.stack_frames.pop();
|
|
||||||
result
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Retrieve the current AVM execution frame.
|
|
||||||
///
|
|
||||||
/// Yields None if there is no stack frame.
|
|
||||||
pub fn current_stack_frame(&self) -> Result<GcCell<'gc, Activation<'gc>>, Error<'gc>> {
|
|
||||||
self.stack_frames.last().copied().ok_or(Error::NoStackFrame)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Checks if there is currently a stack frame.
|
|
||||||
///
|
|
||||||
/// This is an indicator if you are currently running from inside or outside the AVM.
|
|
||||||
/// This method is cheaper than `current_stack_frame` as it doesn't need to perform a copy.
|
|
||||||
pub fn has_stack_frame(&self) -> bool {
|
|
||||||
!self.stack_frames.is_empty()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn notify_system_listeners(
|
pub fn notify_system_listeners(
|
||||||
|
@ -383,20 +360,16 @@ impl<'gc> Avm1<'gc> {
|
||||||
context: &mut UpdateContext<'_, 'gc, '_>,
|
context: &mut UpdateContext<'_, 'gc, '_>,
|
||||||
activation: GcCell<'gc, Activation<'gc>>,
|
activation: GcCell<'gc, Activation<'gc>>,
|
||||||
) -> Result<(), Error<'gc>> {
|
) -> Result<(), Error<'gc>> {
|
||||||
self.stack_frames.push(activation);
|
|
||||||
let mut stack_frame = StackFrame::new(self, activation);
|
let mut stack_frame = StackFrame::new(self, activation);
|
||||||
match stack_frame.run(context) {
|
match stack_frame.run(context) {
|
||||||
Ok(return_type) => {
|
Ok(return_type) => {
|
||||||
self.stack_frames.pop();
|
let can_return = activation.read().can_return();
|
||||||
|
|
||||||
let can_return = activation.read().can_return() && !self.stack_frames.is_empty();
|
|
||||||
if can_return {
|
if can_return {
|
||||||
self.push(return_type.value());
|
self.push(return_type.value());
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
stack_frame.avm().stack_frames.pop();
|
|
||||||
if error.is_halting() {
|
if error.is_halting() {
|
||||||
stack_frame.avm().halt();
|
stack_frame.avm().halt();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue