Ignore:
Timestamp:
Aug 3, 2010, 1:34:17 PM (15 years ago)
Author:
[email protected]
Message:

https://bugs.webkit.org/show_bug.cgi?id=41318
GC should reclaim garbage even when new objects are not being allocated rapidly

Patch by Nathan Lawrence <[email protected]> on 2010-08-03
Reviewed by Oliver Hunt.

Added a callback in JavaScriptCore that gets triggered after an
allocation causes the heap to reset. This is useful for adding a
timer that will trigger garbage collection after the "last" allocation.

Also needed was to add lock and unlock methods to JSLock that needed
only a JSGlobalData object versus an ExecState object.

(JSC::JIT::emit_op_put_by_val):

  • runtime/Collector.cpp:

(JSC::Heap::Heap):
(JSC::Heap::reset):
(JSC::Heap::setActivityCallback):

  • runtime/Collector.h:
  • runtime/GCActivityCallback.cpp: Added.

(JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
(JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
(JSC::DefaultGCActivityCallback::operator()):

  • runtime/GCActivityCallback.h: Added.

(JSC::GCActivityCallback::~GCActivityCallback):
(JSC::GCActivityCallback::operator()):
(JSC::GCActivityCallback::GCActivityCallback):
(JSC::DefaultGCActivityCallback::create):

  • runtime/GCActivityCallbackCF.cpp: Added.

(JSC::DefaultGCActivityCallbackPlatformData::trigger):
(JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
(JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
(JSC::DefaultGCActivityCallback::operator()):

  • runtime/JSLock.cpp:

(JSC::JSLock::JSLock):

  • runtime/JSLock.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r64146 r64585  
    509509                BCFD8C930EEB2EE700283848 /* JumpTable.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFD8C910EEB2EE700283848 /* JumpTable.h */; };
    510510                C0A272630E50A06300E96E15 /* NotFound.h in Headers */ = {isa = PBXBuildFile; fileRef = C0A2723F0E509F1E00E96E15 /* NotFound.h */; settings = {ATTRIBUTES = (Private, ); }; };
     511                DDF7ABD411F60ED200108E36 /* GCActivityCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF7ABD211F60ED200108E36 /* GCActivityCallback.h */; };
     512                DDF7ABD511F60ED200108E36 /* GCActivityCallbackCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDF7ABD311F60ED200108E36 /* GCActivityCallbackCF.cpp */; };
    511513                E124A8F70E555775003091F1 /* OpaqueJSString.h in Headers */ = {isa = PBXBuildFile; fileRef = E124A8F50E555775003091F1 /* OpaqueJSString.h */; settings = {ATTRIBUTES = (Private, ); }; };
    512514                E124A8F80E555775003091F1 /* OpaqueJSString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E124A8F60E555775003091F1 /* OpaqueJSString.cpp */; };
     
    10501052                D21202280AD4310C00ED79B6 /* DateConversion.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DateConversion.cpp; sourceTree = "<group>"; };
    10511053                D21202290AD4310C00ED79B6 /* DateConversion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DateConversion.h; sourceTree = "<group>"; };
     1054                DDF7ABD211F60ED200108E36 /* GCActivityCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCActivityCallback.h; sourceTree = "<group>"; };
     1055                DDF7ABD311F60ED200108E36 /* GCActivityCallbackCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GCActivityCallbackCF.cpp; sourceTree = "<group>"; };
    10521056                E11D51750B2E798D0056C188 /* StringExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringExtras.h; sourceTree = "<group>"; };
    10531057                E124A8F50E555775003091F1 /* OpaqueJSString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpaqueJSString.h; sourceTree = "<group>"; };
     
    15561560                        isa = PBXGroup;
    15571561                        children = (
     1562                                DDF7ABD211F60ED200108E36 /* GCActivityCallback.h */,
     1563                                DDF7ABD311F60ED200108E36 /* GCActivityCallbackCF.cpp */,
    15581564                                BCF605110E203EF800B9A64D /* ArgList.cpp */,
    15591565                                BCF605120E203EF800B9A64D /* ArgList.h */,
     
    21942200                                86D08D5411793613006E5ED0 /* WTFThreadData.h in Headers */,
    21952201                                9688CB160ED12B4E001D649F /* X86Assembler.h in Headers */,
     2202                                DDF7ABD411F60ED200108E36 /* GCActivityCallback.h in Headers */,
    21962203                        );
    21972204                        runOnlyForDeploymentPostprocessing = 0;
     
    26332640                                868BFA17117CF19900B908B1 /* WTFString.cpp in Sources */,
    26342641                                86D08D5311793613006E5ED0 /* WTFThreadData.cpp in Sources */,
     2642                                DDF7ABD511F60ED200108E36 /* GCActivityCallbackCF.cpp in Sources */,
    26352643                                8627E5EB11F1281900A313B5 /* PageAllocation.cpp in Sources */,
    26362644                        );
Note: See TracChangeset for help on using the changeset viewer.