Diff
Deleted: trunk/Source/_javascript_Core/API/JSBlockAdaptor.h (144488 => 144489)
--- trunk/Source/_javascript_Core/API/JSBlockAdaptor.h 2013-03-01 21:07:34 UTC (rev 144488)
+++ trunk/Source/_javascript_Core/API/JSBlockAdaptor.h 2013-03-01 21:14:24 UTC (rev 144489)
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <_javascript_Core/_javascript_Core.h>
-
-#if JSC_OBJC_API_ENABLED
-
-@interface JSBlockAdaptor : NSObject
-
-- (id)initWithBlockSignatureFromProtocol:(const char *)signature;
-- (id)blockFromValue:(JSValueRef)argument inContext:(JSContext *)context withException:(JSValueRef *)exception;
-
-@end
-
-#endif
Deleted: trunk/Source/_javascript_Core/API/JSBlockAdaptor.mm (144488 => 144489)
--- trunk/Source/_javascript_Core/API/JSBlockAdaptor.mm 2013-03-01 21:07:34 UTC (rev 144488)
+++ trunk/Source/_javascript_Core/API/JSBlockAdaptor.mm 2013-03-01 21:14:24 UTC (rev 144489)
@@ -1,400 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#import "_javascript_Core.h"
-
-#if JSC_OBJC_API_ENABLED
-
-#import "APICast.h"
-#import "APIShims.h"
-#import "Error.h"
-#import "JSBlockAdaptor.h"
-#import "JSContextInternal.h"
-#import "JSCJSValue.h"
-#import "JSValueInternal.h"
-#import "JSWrapperMap.h"
-#import "ObjcRuntimeExtras.h"
-#import "Operations.h"
-#import <wtf/OwnPtr.h>
-#import <wtf/RetainPtr.h>
-
-extern "C" {
-id __NSMakeSpecialForwardingCaptureBlock(const char *signature, void (^handler)(NSInvocation *));
-}
-
-class BlockArgument {
-public:
- virtual ~BlockArgument();
- virtual JSValueRef get(NSInvocation *, NSInteger, JSContext *, JSValueRef*) = 0;
-
- OwnPtr<BlockArgument> m_next;
-};
-
-BlockArgument::~BlockArgument()
-{
-}
-
-class BlockArgumentBoolean : public BlockArgument {
- virtual JSValueRef get(NSInvocation *invocation, NSInteger argumentNumber, JSContext *context, JSValueRef*) override
- {
- bool value;
- [invocation getArgument:&value atIndex:argumentNumber];
- return JSValueMakeBoolean(contextInternalContext(context), value);
- }
-};
-
-template<typename T>
-class BlockArgumentNumeric : public BlockArgument {
- virtual JSValueRef get(NSInvocation *invocation, NSInteger argumentNumber, JSContext *context, JSValueRef*) override
- {
- T value;
- [invocation getArgument:&value atIndex:argumentNumber];
- return JSValueMakeNumber(contextInternalContext(context), value);
- }
-};
-
-class BlockArgumentId : public BlockArgument {
- virtual JSValueRef get(NSInvocation *invocation, NSInteger argumentNumber, JSContext *context, JSValueRef*) override
- {
- id value;
- [invocation getArgument:&value atIndex:argumentNumber];
- return objectToValue(context, value);
- }
-};
-
-class BlockArgumentStruct : public BlockArgument {
-public:
- BlockArgumentStruct(NSInvocation *conversionInvocation, const char* encodedType)
- : m_conversionInvocation(conversionInvocation)
- , m_buffer(encodedType)
- {
- }
-
-private:
- virtual JSValueRef get(NSInvocation *invocation, NSInteger argumentNumber, JSContext *context, JSValueRef*) override
- {
- [invocation getArgument:m_buffer atIndex:argumentNumber];
-
- [m_conversionInvocation setArgument:m_buffer atIndex:2];
- [m_conversionInvocation setArgument:&context atIndex:3];
- [m_conversionInvocation invokeWithTarget:[JSValue class]];
-
- JSValue *value;
- [m_conversionInvocation getReturnValue:&value];
- return valueInternalValue(value);
- }
-
- RetainPtr<NSInvocation> m_conversionInvocation;
- StructBuffer m_buffer;
-};
-
-class BlockArgumentTypeDelegate {
-public:
- typedef BlockArgument* ResultType;
-
- template<typename T>
- static ResultType typeInteger()
- {
- return new BlockArgumentNumeric<T>;
- }
-
- template<typename T>
- static ResultType typeDouble()
- {
- return new BlockArgumentNumeric<T>;
- }
-
- static ResultType typeBool()
- {
- return new BlockArgumentBoolean;
- }
-
- static ResultType typeVoid()
- {
- RELEASE_ASSERT_NOT_REACHED();
- return 0;
- }
-
- static ResultType typeId()
- {
- return new BlockArgumentId;
- }
-
- static ResultType typeOfClass(const char*, const char*)
- {
- return new BlockArgumentId;
- }
-
- static ResultType typeBlock(const char*, const char*)
- {
- return 0;
- }
-
- static ResultType typeStruct(const char* begin, const char* end)
- {
- StringRange copy(begin, end);
- if (NSInvocation *invocation = valueToTypeInvocationFor(copy))
- return new BlockArgumentStruct(invocation, copy);
- return 0;
- }
-};
-
-class BlockResult {
-public:
- virtual ~BlockResult()
- {
- }
-
- virtual void set(NSInvocation *, JSContext *, JSValueRef, JSValueRef*) = 0;
-};
-
-class BlockResultVoid : public BlockResult {
- virtual void set(NSInvocation *, JSContext *, JSValueRef, JSValueRef*) override
- {
- }
-};
-
-template<typename T>
-class BlockResultInteger : public BlockResult {
- virtual void set(NSInvocation *invocation, JSContext *context, JSValueRef result, JSValueRef* exception) override
- {
- T value = (T)JSC::toInt32(JSValueToNumber(contextInternalContext(context), result, exception));
- [invocation setReturnValue:&value];
- }
-};
-
-template<typename T>
-class BlockResultDouble : public BlockResult {
- virtual void set(NSInvocation *invocation, JSContext *context, JSValueRef result, JSValueRef* exception) override
- {
- T value = (T)JSValueToNumber(contextInternalContext(context), result, exception);
- [invocation setReturnValue:&value];
- }
-};
-
-class BlockResultBoolean : public BlockResult {
- virtual void set(NSInvocation *invocation, JSContext *context, JSValueRef result, JSValueRef*) override
- {
- bool value = JSValueToBoolean(contextInternalContext(context), result);
- [invocation setReturnValue:&value];
- }
-};
-
-class BlockResultStruct : public BlockResult {
-public:
- BlockResultStruct(NSInvocation *conversionInvocation, const char* encodedType)
- : m_conversionInvocation(conversionInvocation)
- , m_buffer(encodedType)
- {
- }
-
-private:
- virtual void set(NSInvocation *invocation, JSContext *context, JSValueRef result, JSValueRef*) override
- {
- JSValue *value = [JSValue valueWithValue:result inContext:context];
- [m_conversionInvocation invokeWithTarget:value];
- [m_conversionInvocation getReturnValue:m_buffer];
- [invocation setReturnValue:&value];
- }
-
- RetainPtr<NSInvocation> m_conversionInvocation;
- StructBuffer m_buffer;
-};
-
-@implementation JSBlockAdaptor {
- RetainPtr<NSString> m_signatureWithOffsets;
- RetainPtr<NSString> m_signatureWithoutOffsets;
- OwnPtr<BlockResult> m_result;
- OwnPtr<BlockArgument> m_arguments;
- size_t m_argumentCount;
-}
-
-// Helper function to add offset information back into a block signature.
-static NSString *buildBlockSignature(NSString *prefix, const char* begin, const char* end, unsigned long long& offset, NSString *postfix)
-{
- StringRange copy(begin, end);
- NSString *result = [NSString stringWithFormat:@"%@%s%@%@", prefix, copy.get(), @(offset), postfix];
- NSUInteger size;
- NSGetSizeAndAlignment(copy, &size, 0);
- if (size < 4)
- size = 4;
- offset += size;
- return result;
-}
-
-- (id)initWithBlockSignatureFromProtocol:(const char*)encodedType
-{
- self = [super init];
- if (!self)
- return nil;
-
- m_signatureWithoutOffsets = [NSString stringWithUTF8String:encodedType];
- m_argumentCount = 0;
-
- // Currently only adapting _javascript_ functions to blocks returning void.
- const char* resultTypeBegin = encodedType;
- if (*encodedType++ != 'v')
- return self;
- OwnPtr<BlockResult> result = adoptPtr(new BlockResultVoid);
- const char* resultTypeEnd = encodedType;
-
- if (encodedType[0] != '@' || encodedType[1] != '?')
- return self;
- encodedType += 2;
-
- // The first argument to a block is the block itself.
- NSString *signature = @"@?0";
- unsigned long long offset = sizeof(void*);
-
- OwnPtr<BlockArgument> arguments;
- OwnPtr<BlockArgument>* nextArgument = &arguments;
- while (*encodedType) {
- const char* begin = encodedType;
- OwnPtr<BlockArgument> argument = adoptPtr(parseObjCType<BlockArgumentTypeDelegate>(encodedType));
- if (!argument)
- return self;
- const char* end = encodedType;
-
- // Append the type & stack offset of this argument to the signature string.
- signature = buildBlockSignature(signature, begin, end, offset, @"");
-
- *nextArgument = argument.release();
- nextArgument = &(*nextArgument)->m_next;
- ++m_argumentCount;
- }
-
- // Prefix the signature with the return type & total stackframe size.
- // (this call will also add the return type size to the offset,
- // which is a nonsense, but harmless since this is the last use).
- signature = buildBlockSignature(@"", resultTypeBegin, resultTypeEnd, offset, signature);
-
- m_signatureWithOffsets = signature;
- m_result = result.release();
- m_arguments = arguments.release();
-
- return self;
-}
-
-// The JSBlockAdaptor stores the type string taken from the protocol. This string
-// does not contain invocation layout information. The signature from the block
-// does contain the stackframe offsets. Skip these when comparing strings.
-- (bool)blockMatchesSignature:(id)block
-{
- if (!_Block_has_signature(block))
- return false;
-
- const char* withoutOffsets = [m_signatureWithoutOffsets UTF8String];
- const char* signature = _Block_signature(block);
-
- while (true) {
- while (isdigit(*withoutOffsets))
- ++withoutOffsets;
- while (isdigit(*signature))
- ++signature;
-
- if (*withoutOffsets != *signature)
- return false;
- if (!*withoutOffsets)
- return true;
- ++withoutOffsets;
- ++signature;
- }
-}
-
-- (id)blockFromValue:(JSValueRef)argument inContext:(JSContext *)context withException:(JSValueRef*)exception
-{
- JSGlobalContextRef contextRef = contextInternalContext(context);
-
- // Check for null/undefined.
- if (JSValueIsUndefined(contextRef, argument) || JSValueIsNull(contextRef, argument))
- return nil;
-
- JSObjectRef function = 0;
- if (id object = tryUnwrapObjcObject(contextRef, argument)) {
- // Check if the argument is an Objective-C block.
- if ([object isKindOfClass:getNSBlockClass()]) {
- if ([self blockMatchesSignature:object])
- return object;
- }
- } else if (m_signatureWithOffsets && JSValueIsObject(contextRef, argument)) {
- // Check if the argument is a _javascript_ function
- // (and that we're able to create a forwarding block for this signature).
- JSObjectRef object = JSValueToObject(contextRef, argument, exception);
- if (JSObjectIsFunction(contextRef, object))
- function = object;
- }
-
- if (!function) {
- JSC::APIEntryShim entryShim(toJS(contextRef));
- *exception = toRef(JSC::createTypeError(toJS(contextRef), "Invalid argument supplied for Objective-C block"));
- return nil;
- }
-
- // Captured variables.
- JSBlockAdaptor *adaptor = self;
- JSValue *value = [JSValue valueWithValue:function inContext:context];
-
- // FIXME: https://bugs.webkit.org/show_bug.cgi?id=105895
- // Currently only supporting void functions.
- return __NSMakeSpecialForwardingCaptureBlock([m_signatureWithOffsets UTF8String], ^(NSInvocation *invocation){
- // FIXME: https://bugs.webkit.org/show_bug.cgi?id=105894
- // Rather than requiring that the context be retained, it would probably be more
- // appropriate to use a new JSContext instance (creating one if necessary).
- // It would be nice if we could throw a JS exception here, but without a context we have
- // nothing to work with.
- JSContext *context = value.context;
- if (!context)
- return;
- JSGlobalContextRef contextRef = contextInternalContext(context);
-
- JSValueRef argumentArray[adaptor->m_argumentCount];
-
- size_t argumentNumber = 0;
- BlockArgument* arguments = adaptor->m_arguments.get();
- for (BlockArgument* argument = arguments; argument; argument = argument->m_next.get()) {
- JSValueRef exception = 0;
- argumentArray[argumentNumber] = argument->get(invocation, argumentNumber + 1, context, &exception);
- if (exception) {
- [context notifyException:exception];
- return;
- }
-
- ++argumentNumber;
- }
- size_t argumentCount = argumentNumber;
-
- JSValueRef exception = 0;
- JSObjectCallAsFunction(contextRef, JSValueToObject(contextRef, valueInternalValue(value), 0), 0, argumentCount, argumentArray, &exception);
- if (exception) {
- [context notifyException:exception];
- return;
- }
- });
-}
-
-@end
-
-#endif
Modified: trunk/Source/_javascript_Core/API/ObjCCallbackFunction.mm (144488 => 144489)
--- trunk/Source/_javascript_Core/API/ObjCCallbackFunction.mm 2013-03-01 21:07:34 UTC (rev 144488)
+++ trunk/Source/_javascript_Core/API/ObjCCallbackFunction.mm 2013-03-01 21:14:24 UTC (rev 144489)
@@ -31,7 +31,6 @@
#import "APICast.h"
#import "APIShims.h"
#import "Error.h"
-#import "JSBlockAdaptor.h"
#import "JSCJSValueInlines.h"
#import "JSCell.h"
#import "JSCellInlines.h"
@@ -195,33 +194,6 @@
StructBuffer m_buffer;
};
-class CallbackArgumentBlockCallback : public CallbackArgument {
-public:
- static CallbackArgumentBlockCallback* createAdoptingJSBlockAdaptor(JSBlockAdaptor *adaptor)
- {
- return new CallbackArgumentBlockCallback(adaptor);
- }
-
-private:
- CallbackArgumentBlockCallback(JSBlockAdaptor *adaptor)
- : m_adaptor(adaptor)
- {
- }
-
- virtual ~CallbackArgumentBlockCallback()
- {
- [m_adaptor release];
- }
-
- virtual void set(NSInvocation *invocation, NSInteger argumentNumber, JSContext *context, JSValueRef argument, JSValueRef* exception) override
- {
- id block = [m_adaptor blockFromValue:argument inContext:context withException:exception];
- [invocation setArgument:&block atIndex:argumentNumber];
- }
-
- JSBlockAdaptor *m_adaptor;
-};
-
class ArgumentTypeDelegate {
public:
typedef CallbackArgument* ResultType;
@@ -277,10 +249,9 @@
return new CallbackArgumentOfClass(cls);
}
- static ResultType typeBlock(const char* begin, const char* end)
+ static ResultType typeBlock(const char*, const char*)
{
- StringRange copy(begin, end);
- return CallbackArgumentBlockCallback::createAdoptingJSBlockAdaptor([[JSBlockAdaptor alloc] initWithBlockSignatureFromProtocol:copy]);
+ return nil;
}
static ResultType typeStruct(const char* begin, const char* end)
Modified: trunk/Source/_javascript_Core/API/tests/testapi.mm (144488 => 144489)
--- trunk/Source/_javascript_Core/API/tests/testapi.mm 2013-03-01 21:07:34 UTC (rev 144488)
+++ trunk/Source/_javascript_Core/API/tests/testapi.mm 2013-03-01 21:14:24 UTC (rev 144489)
@@ -58,6 +58,7 @@
- (NSString *)testArgumentTypesWithInt:(int)i double:(double)d boolean:(BOOL)b string:(NSString *)s number:(NSNumber *)n array:(NSArray *)a dictionary:(NSDictionary *)o
);
- (void)callback:(JSValue *)function;
+- (void)bogusCallback:(void(^)(int))function;
@end
@interface TestObject : ParentObject <TestObject>
@@ -89,6 +90,10 @@
{
[function callWithArguments:[NSArray arrayWithObject:[NSNumber numberWithInt:42]]];
}
+- (void)bogusCallback:(void(^)(int))function
+{
+ function(42);
+}
@end
bool testXYZTested = false;
@@ -476,6 +481,8 @@
context[@"testObject"] = testObject;
JSValue *result = [context evaluateScript:@"var result = 0; testObject.callback(function(x){ result = x; }); result"];
checkResult(@"testObject.callback", [result isNumber] && [result toInt32] == 42);
+ result = [context evaluateScript:@"testObject.bogusCallback"];
+ checkResult(@"testObject.bogusCallback == undefined", [result isUndefined]);
}
@autoreleasepool {
Modified: trunk/Source/_javascript_Core/ChangeLog (144488 => 144489)
--- trunk/Source/_javascript_Core/ChangeLog 2013-03-01 21:07:34 UTC (rev 144488)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-03-01 21:14:24 UTC (rev 144489)
@@ -1,3 +1,27 @@
+2013-03-01 Mark Hahnenberg <[email protected]>
+
+ Objective-C API: Passing JS functions to Objective-C callbacks causes JSValue to leak
+ https://bugs.webkit.org/show_bug.cgi?id=107836
+
+ Reviewed by Oliver Hunt.
+
+ We've decided to remove support for this feature from the API because there's no way to automatically manage
+ the memory for clients in a satisfactory manner. Clients can still pass JS functions to Objective-C methods,
+ but the methods must accept plain JSValues instead of Objective-C blocks.
+
+ We now ignore functions that are part of a protocol that inherits from JSExport that accept blocks as arguments.
+
+ * API/JSBlockAdaptor.h: Removed.
+ * API/JSBlockAdaptor.mm: Removed.
+ * API/ObjCCallbackFunction.mm:
+ (ArgumentTypeDelegate::typeBlock): Return nil to signal that we want to ignore this function when copying it
+ to the object from the protocol.
+ * API/tests/testapi.mm: Added a test to make sure that we ignore methods declared as part of a JSExport-ed protocol
+ that have block arguments.
+ (-[TestObject bogusCallback:]):
+ * _javascript_Core.gypi: Updated build files.
+ * _javascript_Core.xcodeproj/project.pbxproj:
+
2013-03-01 Filip Pizlo <[email protected]>
DFG Branch(LogicalNot) peephole should not try to optimize and work-around the case where LogicalNot may be otherwise live
Modified: trunk/Source/_javascript_Core/_javascript_Core.gypi (144488 => 144489)
--- trunk/Source/_javascript_Core/_javascript_Core.gypi 2013-03-01 21:07:34 UTC (rev 144488)
+++ trunk/Source/_javascript_Core/_javascript_Core.gypi 2013-03-01 21:14:24 UTC (rev 144489)
@@ -39,7 +39,6 @@
'API/JSBase.cpp',
'API/JSBase.h',
'API/JSBasePrivate.h',
- 'API/JSBlockAdaptor.h',
'API/JSCallbackConstructor.cpp',
'API/JSCallbackConstructor.h',
'API/JSCallbackFunction.cpp',
Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (144488 => 144489)
--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2013-03-01 21:07:34 UTC (rev 144488)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2013-03-01 21:14:24 UTC (rev 144489)
@@ -618,8 +618,6 @@
86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DC31328DF82002B2AD7 /* DFGSpeculativeJIT.h */; settings = {ATTRIBUTES = (Private, ); }; };
86ECA3EA132DEF1C002B2AD7 /* DFGNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
86ECA3FA132DF25A002B2AD7 /* DFGScoreBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ECA3F9132DF25A002B2AD7 /* DFGScoreBoard.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 86F3EEBB168CDE930077B92A /* JSBlockAdaptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 86F3EEB7168CCF750077B92A /* JSBlockAdaptor.h */; };
- 86F3EEBC168CDE930077B92A /* JSBlockAdaptor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86F3EEB8168CCF750077B92A /* JSBlockAdaptor.mm */; };
86F3EEBD168CDE930077B92A /* ObjCCallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 86F3EEB9168CCF750077B92A /* ObjCCallbackFunction.h */; };
86F3EEBE168CDE930077B92A /* ObjCCallbackFunction.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86F3EEBA168CCF750077B92A /* ObjCCallbackFunction.mm */; };
86F3EEBF168CDE930077B92A /* ObjcRuntimeExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 86F3EEB616855A5B0077B92A /* ObjcRuntimeExtras.h */; };
@@ -1508,8 +1506,6 @@
86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNode.h; path = dfg/DFGNode.h; sourceTree = "<group>"; };
86ECA3F9132DF25A002B2AD7 /* DFGScoreBoard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGScoreBoard.h; path = dfg/DFGScoreBoard.h; sourceTree = "<group>"; };
86F3EEB616855A5B0077B92A /* ObjcRuntimeExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjcRuntimeExtras.h; sourceTree = "<group>"; };
- 86F3EEB7168CCF750077B92A /* JSBlockAdaptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBlockAdaptor.h; sourceTree = "<group>"; };
- 86F3EEB8168CCF750077B92A /* JSBlockAdaptor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSBlockAdaptor.mm; sourceTree = "<group>"; };
86F3EEB9168CCF750077B92A /* ObjCCallbackFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjCCallbackFunction.h; sourceTree = "<group>"; };
86F3EEBA168CCF750077B92A /* ObjCCallbackFunction.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ObjCCallbackFunction.mm; sourceTree = "<group>"; };
86F75EFB151C062F007C9BA3 /* RegExpCachedResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpCachedResult.cpp; sourceTree = "<group>"; };
@@ -2159,8 +2155,6 @@
1421359A0A677F4F00A8195E /* JSBase.cpp */,
142711380A460BBB0080EEEA /* JSBase.h */,
140D17D60E8AD4A9000CD17D /* JSBasePrivate.h */,
- 86F3EEB7168CCF750077B92A /* JSBlockAdaptor.h */,
- 86F3EEB8168CCF750077B92A /* JSBlockAdaptor.mm */,
1440F8AD0A508D200005F061 /* JSCallbackConstructor.cpp */,
1440F8AC0A508D200005F061 /* JSCallbackConstructor.h */,
1440F8900A508B100005F061 /* JSCallbackFunction.cpp */,
@@ -3122,7 +3116,6 @@
BC18C4170E16F5CD00B34460 /* JSArray.h in Headers */,
BC18C4180E16F5CD00B34460 /* JSBase.h in Headers */,
140D17D70E8AD4A9000CD17D /* JSBasePrivate.h in Headers */,
- 86F3EEBB168CDE930077B92A /* JSBlockAdaptor.h in Headers */,
86FA9E92142BBB2E001773B7 /* JSBoundFunction.h in Headers */,
BC18C4190E16F5CD00B34460 /* JSCallbackConstructor.h in Headers */,
BC18C41A0E16F5CD00B34460 /* JSCallbackFunction.h in Headers */,
@@ -3867,7 +3860,6 @@
140566C4107EC255005DBC8D /* JSAPIValueWrapper.cpp in Sources */,
147F39D0107EC37600427A48 /* JSArray.cpp in Sources */,
1421359B0A677F4F00A8195E /* JSBase.cpp in Sources */,
- 86F3EEBC168CDE930077B92A /* JSBlockAdaptor.mm in Sources */,
86FA9E91142BBB2E001773B7 /* JSBoundFunction.cpp in Sources */,
1440F8AF0A508D200005F061 /* JSCallbackConstructor.cpp in Sources */,
1440F8920A508B100005F061 /* JSCallbackFunction.cpp in Sources */,