Bug 186579

Summary: Share structure across instances of classes exported through the ObjC API
Product: WebKit Reporter: Tadeu Zagallo <tzagallo>
Component: New BugsAssignee: Tadeu Zagallo <tzagallo>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, ews-watchlist, fpizlo, keith_miller, mark.lam, msaboff, saam
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Archive of layout-test-results from ews204 for win-future
none
Patch
none
Archive of layout-test-results from ews112 for mac-sierra
none
Archive of layout-test-results from ews206 for win-future
none
Patch
none
Patch
none
Archive of layout-test-results from ews206 for win-future
none
Patch none

Tadeu Zagallo
Reported 2018-06-12 16:23:23 PDT
Share structure across instances of classes exported through the ObjC API
Attachments
Patch (4.03 KB, patch)
2018-06-12 16:24 PDT, Tadeu Zagallo
no flags
Archive of layout-test-results from ews204 for win-future (12.73 MB, application/zip)
2018-06-13 10:37 PDT, EWS Watchlist
no flags
Patch (3.10 KB, patch)
2018-06-14 04:04 PDT, Tadeu Zagallo
no flags
Archive of layout-test-results from ews112 for mac-sierra (2.99 MB, application/zip)
2018-06-14 05:54 PDT, EWS Watchlist
no flags
Archive of layout-test-results from ews206 for win-future (12.76 MB, application/zip)
2018-06-14 16:01 PDT, EWS Watchlist
no flags
Patch (13.30 KB, patch)
2018-06-14 16:36 PDT, Tadeu Zagallo
no flags
Patch (13.27 KB, patch)
2018-06-15 06:35 PDT, Tadeu Zagallo
no flags
Archive of layout-test-results from ews206 for win-future (12.79 MB, application/zip)
2018-06-15 11:21 PDT, EWS Watchlist
no flags
Patch (13.30 KB, patch)
2018-06-15 15:05 PDT, Tadeu Zagallo
no flags
Tadeu Zagallo
Comment 1 2018-06-12 16:24:05 PDT
Tadeu Zagallo
Comment 2 2018-06-12 16:25:58 PDT
EWS Watchlist
Comment 3 2018-06-13 10:36:57 PDT
Comment on attachment 342610 [details] Patch Attachment 342610 [details] did not pass win-ews (win): Output: http://webkit-queues.webkit.org/results/8164540 New failing tests: http/tests/security/contentSecurityPolicy/userAgentShadowDOM/allow-video.html
EWS Watchlist
Comment 4 2018-06-13 10:37:08 PDT
Created attachment 342672 [details] Archive of layout-test-results from ews204 for win-future The attached test failures were seen while running run-webkit-tests on the win-ews. Bot: ews204 Port: win-future Platform: CYGWIN_NT-6.1-2.9.0-0.318-5-3-x86_64-64bit
Keith Miller
Comment 5 2018-06-13 10:50:56 PDT
Comment on attachment 342610 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=342610&action=review r- since I don't think one of the changes is warranted but other than that it looks good. It would also be good to add an API test for this: allocate like 50,000 api objects and check the number of live structures is something reasonable (< 5000) afterwords. > Source/JavaScriptCore/API/JSWrapperMap.mm:540 > - if (!constructor) > - constructor = [self allocateConstructorAndPrototypeInContext:context].first; > - ASSERT(!!constructor); > - return constructor; > + if (constructor) > + return constructor; > + > + m_constructor = [self allocateConstructorAndPrototypeInContext:context].first; > + ASSERT(!!m_constructor); > + return m_constructor.get(); Why make this change? allocateConstructorAndPrototypeInContext sets m_constructor/m_prototype so you shouldn't need to do it here. > Source/JavaScriptCore/API/JSWrapperMap.mm:551 > - if (!prototype) > - prototype = [self allocateConstructorAndPrototypeInContext:context].second; > - ASSERT(!!prototype); > - return prototype; > + if (prototype) > + return prototype; > + > + m_prototype = [self allocateConstructorAndPrototypeInContext:context].second; > + ASSERT(!!m_prototype); > + return m_prototype.get(); Ditto.
Saam Barati
Comment 6 2018-06-13 11:58:16 PDT
Comment on attachment 342610 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=342610&action=review >> Source/JavaScriptCore/API/JSWrapperMap.mm:540 >> + return m_constructor.get(); > > Why make this change? allocateConstructorAndPrototypeInContext sets m_constructor/m_prototype so you shouldn't need to do it here. The old code never cached to our weak variable. >> Source/JavaScriptCore/API/JSWrapperMap.mm:551 >> + return m_prototype.get(); > > Ditto. ditto
Keith Miller
Comment 7 2018-06-13 12:09:39 PDT
Comment on attachment 342610 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=342610&action=review >>> Source/JavaScriptCore/API/JSWrapperMap.mm:540 >>> + return m_constructor.get(); >> >> Why make this change? allocateConstructorAndPrototypeInContext sets m_constructor/m_prototype so you shouldn't need to do it here. > > The old code never cached to our weak variable. Yeah, it did... right before it returned the tuple. >>> Source/JavaScriptCore/API/JSWrapperMap.mm:551 >>> + return m_prototype.get(); >> >> Ditto. > > ditto Ditto.
Tadeu Zagallo
Comment 8 2018-06-14 04:04:13 PDT
EWS Watchlist
Comment 9 2018-06-14 05:54:01 PDT
Comment on attachment 342730 [details] Patch Attachment 342730 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/8178650 New failing tests: media/media-fragments/TC0089.html
EWS Watchlist
Comment 10 2018-06-14 05:54:02 PDT
Created attachment 342733 [details] Archive of layout-test-results from ews112 for mac-sierra The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-sierra Platform: Mac OS X 10.12.6
Saam Barati
Comment 11 2018-06-14 10:58:01 PDT
Comment on attachment 342730 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=342730&action=review r=me > Source/JavaScriptCore/API/JSWrapperMap.mm:521 > + auto structure = [self structureInContext:context]; I think we tend to use auto* here or write out the type. Ditto in below uses
Saam Barati
Comment 12 2018-06-14 10:58:39 PDT
Comment on attachment 342730 [details] Patch It would be good to add a test forth is where you assert that the structures are the same
EWS Watchlist
Comment 13 2018-06-14 16:01:34 PDT
Comment on attachment 342730 [details] Patch Attachment 342730 [details] did not pass win-ews (win): Output: http://webkit-queues.webkit.org/results/8185530 New failing tests: http/tests/security/video-poster-cross-origin-crash2.html
EWS Watchlist
Comment 14 2018-06-14 16:01:45 PDT
Created attachment 342773 [details] Archive of layout-test-results from ews206 for win-future The attached test failures were seen while running run-webkit-tests on the win-ews. Bot: ews206 Port: win-future Platform: CYGWIN_NT-6.1-2.9.0-0.318-5-3-x86_64-64bit
Tadeu Zagallo
Comment 15 2018-06-14 16:36:53 PDT
Created attachment 342776 [details] Patch Style fixes + test
WebKit Commit Bot
Comment 16 2018-06-14 17:10:04 PDT
Comment on attachment 342776 [details] Patch Rejecting attachment 342776 [details] from commit-queue. Failed to run "['/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch', '--status-host=webkit-queues.webkit.org', '--bot-id=webkit-cq-01', 'build', '--no-clean', '--no-update', '--build-style=release', '--port=mac']" exit_code: 2 cwd: /Volumes/Data/EWS/WebKit Last 5000 characters of output: fno-exceptions -fno-rtti -fpascal-strings -O3 -fno-common -Werror -Wno-missing-field-initializers -Wmissing-prototypes -Wdocumentation -Wnon-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wsign-compare -Wno-shorten-64-to-32 -Wnewline-eof -Wno-c++11-extensions -DNDEBUG -DENABLE_3D_TRANSFORMS -DENABLE_APPLE_PAY -DENABLE_APPLICATION_MANIFEST -DENABLE_ATTACHMENT_ELEMENT -DENABLE_AVF_CAPTIONS -DENABLE_CACHE_PARTITIONING -DENABLE_CHANNEL_MESSAGING -DENABLE_CONTENT_FILTERING -DENABLE_CSS_ANIMATIONS_LEVEL_2 -DENABLE_CSS_BOX_DECORATION_BREAK -DENABLE_CSS_COMPOSITING -DENABLE_CSS_SCROLL_SNAP -DENABLE_CSS_SELECTORS_LEVEL4 -DENABLE_CSS_TRAILING_WORD -DENABLE_CURSOR_VISIBILITY -DENABLE_DASHBOARD_SUPPORT -DENABLE_DATACUE_VALUE -DENABLE_EXPERIMENTAL_FEATURES -DENABLE_FILTERS_LEVEL_2 -DENABLE_FTL_JIT -DENABLE_FULLSCREEN_API -DENABLE_GAMEPAD -DENABLE_GEOLOCATION -DENABLE_ICONDATABASE -DENABLE_INDEXED_DATABASE -DENABLE_INDEXED_DATABASE_IN_WORKERS -DENABLE_INTERSECTION_OBSERVER -DENABLE_INTL -DENABLE_INTL_NUMBER_FORMAT_TO_PARTS -DENABLE_INTL_PLURAL_RULES -DENABLE_JS_ASYNC_ITERATION -DENABLE_KEYBOARD_CODE_ATTRIBUTE -DENABLE_KEYBOARD_KEY_ATTRIBUTE -DENABLE_LEGACY_CSS_VENDOR_PREFIXES -DENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER -DENABLE_LEGACY_ENCRYPTED_MEDIA -DENABLE_MATHML -DENABLE_MEDIA_CONTROLS_SCRIPT -DENABLE_MEDIA_SOURCE -DENABLE_MEDIA_STREAM -DENABLE_METER_ELEMENT -DENABLE_MOUSE_CURSOR_SCALE -DENABLE_NOTIFICATIONS -DENABLE_PAYMENT_REQUEST -DENABLE_PDFKIT_PLUGIN -DENABLE_POINTER_LOCK -DENABLE_PUBLIC_SUFFIX_LIST -DENABLE_REMOTE_INSPECTOR -DENABLE_RESOURCE_USAGE -DENABLE_RUBBER_BANDING -DENABLE_SERVICE_CONTROLS -DENABLE_SERVICE_WORKER -DENABLE_SPEECH_SYNTHESIS -DENABLE_STREAMS_API -DENABLE_SUBTLE_CRYPTO -DENABLE_SVG_FONTS -DENABLE_TELEPHONE_NUMBER_DETECTION -DENABLE_TEXT_AUTOSIZING -DENABLE_USER_MESSAGE_HANDLERS -DENABLE_USERSELECT_ALL -DENABLE_VIDEO -DENABLE_VIDEO_PRESENTATION_MODE -DENABLE_VIDEO_TRACK -DENABLE_VIDEO_USES_ELEMENT_FULLSCREEN -DENABLE_WEB_AUDIO -DENABLE_WEB_AUTHN -DENABLE_WEB_RTC -DENABLE_WEBGL -DENABLE_WEBGL2 -DENABLE_WEBGPU -DENABLE_WIRELESS_PLAYBACK_TARGET -DENABLE_XSLT -DU_HIDE_DEPRECATED_API -DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.12 -g -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -Wno-sign-conversion -Winfinite-recursion -Wmove -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/testapi-generated-files.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/testapi-own-target-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/testapi-all-target-headers.hmap -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/testapi-project-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/include -I/System/Library/Frameworks/JavaScriptCore.framework/PrivateHeaders -I. -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/DerivedSources/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/System.framework/PrivateHeaders -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/Objects-normal/x86_64/TypedArrayCTest.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/Objects-normal/x86_64/TypedArrayCTest.dia -c /Volumes/Data/EWS/WebKit/Source/JavaScriptCore/API/tests/TypedArrayCTest.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/Objects-normal/x86_64/TypedArrayCTest.o ** BUILD FAILED ** The following build commands failed: CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/testapi.build/Objects-normal/x86_64/JSWrapperMapTests.o API/tests/JSWrapperMapTests.mm normal x86_64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler (1 failure) Full output: http://webkit-queues.webkit.org/results/8187046
Tadeu Zagallo
Comment 17 2018-06-15 06:35:27 PDT
EWS Watchlist
Comment 18 2018-06-15 11:21:03 PDT
Comment on attachment 342807 [details] Patch Attachment 342807 [details] did not pass win-ews (win): Output: http://webkit-queues.webkit.org/results/8199858 New failing tests: http/tests/security/local-video-source-from-remote.html
EWS Watchlist
Comment 19 2018-06-15 11:21:14 PDT
Created attachment 342833 [details] Archive of layout-test-results from ews206 for win-future The attached test failures were seen while running run-webkit-tests on the win-ews. Bot: ews206 Port: win-future Platform: CYGWIN_NT-6.1-2.9.0-0.318-5-3-x86_64-64bit
Tadeu Zagallo
Comment 20 2018-06-15 15:05:57 PDT
Created attachment 342850 [details] Patch Add missing include
WebKit Commit Bot
Comment 21 2018-06-18 11:49:08 PDT
Comment on attachment 342850 [details] Patch Clearing flags on attachment: 342850 Committed r232936: <https://trac.webkit.org/changeset/232936>
WebKit Commit Bot
Comment 22 2018-06-18 11:49:10 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.