summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/InternalFunction.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/runtime/InternalFunction.cpp
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/runtime/InternalFunction.cpp')
-rw-r--r--Source/JavaScriptCore/runtime/InternalFunction.cpp41
1 files changed, 3 insertions, 38 deletions
diff --git a/Source/JavaScriptCore/runtime/InternalFunction.cpp b/Source/JavaScriptCore/runtime/InternalFunction.cpp
index bb23d45ed..69120bea5 100644
--- a/Source/JavaScriptCore/runtime/InternalFunction.cpp
+++ b/Source/JavaScriptCore/runtime/InternalFunction.cpp
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999-2002 Harri Porten (porten@kde.org)
* Copyright (C) 2001 Peter Kelly (pmk@post.com)
- * Copyright (C) 2004, 2007, 2008, 2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2007, 2008 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -26,13 +26,13 @@
#include "FunctionPrototype.h"
#include "JSGlobalObject.h"
#include "JSString.h"
-#include "JSCInlines.h"
+#include "Operations.h"
namespace JSC {
STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(InternalFunction);
-const ClassInfo InternalFunction::s_info = { "Function", &Base::s_info, 0, CREATE_METHOD_TABLE(InternalFunction) };
+const ClassInfo InternalFunction::s_info = { "Function", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(InternalFunction) };
InternalFunction::InternalFunction(VM& vm, Structure* structure)
: JSDestructibleObject(vm, structure)
@@ -78,39 +78,4 @@ const String InternalFunction::calculatedDisplayName(ExecState* exec)
return name(exec);
}
-Structure* InternalFunction::createSubclassStructure(ExecState* exec, JSValue newTarget, Structure* baseClass)
-{
-
- VM& vm = exec->vm();
- // We allow newTarget == JSValue() because the API needs to be able to create classes without having a real JS frame.
- // Since we don't allow subclassing in the API we just treat newTarget == JSValue() as newTarget == exec->callee()
- ASSERT(!newTarget || newTarget.isFunction());
-
- if (newTarget && newTarget != exec->callee()) {
- // newTarget may be an InternalFunction if we were called from Reflect.construct.
- JSFunction* targetFunction = jsDynamicCast<JSFunction*>(newTarget);
-
- if (LIKELY(targetFunction)) {
- Structure* structure = targetFunction->rareData(vm)->internalFunctionAllocationStructure();
- if (LIKELY(structure && structure->classInfo() == baseClass->classInfo()))
- return structure;
-
- // Note, Reflect.construct might cause the profile to churn but we don't care.
- JSObject* prototype = jsDynamicCast<JSObject*>(newTarget.get(exec, exec->propertyNames().prototype));
- if (prototype)
- return targetFunction->rareData(vm)->createInternalFunctionAllocationStructureFromBase(vm, prototype, baseClass);
- } else {
- JSObject* prototype = jsDynamicCast<JSObject*>(newTarget.get(exec, exec->propertyNames().prototype));
- if (prototype) {
- // This only happens if someone Reflect.constructs our builtin constructor with another builtin constructor as the new.target.
- // Thus, we don't care about the cost of looking up the structure from our hash table every time.
- return vm.prototypeMap.emptyStructureForPrototypeFromBaseStructure(prototype, baseClass);
- }
- }
- }
-
- return baseClass;
-}
-
-
} // namespace JSC