diff --git a/Libraries/LibJS/Runtime/Function.cpp b/Libraries/LibJS/Runtime/Function.cpp index 605c98141e..a698aba6ef 100644 --- a/Libraries/LibJS/Runtime/Function.cpp +++ b/Libraries/LibJS/Runtime/Function.cpp @@ -43,9 +43,12 @@ Function::Function(Object& prototype, Value bound_this, Vector bound_argu { } +Function::~Function() +{ +} + BoundFunction* Function::bind(Value bound_this_value, Vector arguments) { - Function& target_function = is_bound_function() ? static_cast(*this).target_function() : *this; auto bound_this_object = [bound_this_value, this]() -> Value { @@ -63,21 +66,17 @@ BoundFunction* Function::bind(Value bound_this_value, Vector arguments) i32 computed_length = 0; auto length_property = get("length"); - if (interpreter().exception()) { + if (interpreter().exception()) return nullptr; - } - if (length_property.is_number()) { + if (length_property.is_number()) computed_length = max(0, length_property.to_i32() - static_cast(arguments.size())); - } Object* constructor_prototype = nullptr; auto prototype_property = target_function.get("prototype"); - if (interpreter().exception()) { + if (interpreter().exception()) return nullptr; - } - if (prototype_property.is_object()) { + if (prototype_property.is_object()) constructor_prototype = &prototype_property.as_object(); - } auto all_bound_arguments = bound_arguments(); all_bound_arguments.append(move(arguments)); @@ -91,13 +90,8 @@ void Function::visit_children(Visitor& visitor) visitor.visit(m_bound_this); - for (auto argument : m_bound_arguments) { + for (auto argument : m_bound_arguments) visitor.visit(argument); - } -} - -Function::~Function() -{ } }