Changeset 10701 in webkit for trunk/JavaScriptCore/JavaScriptCorePrefix.h
- Timestamp:
- Oct 3, 2005, 2:13:12 PM (20 years ago)
- Author:
- mjs
- Message:
-
Reviewed by Darin.
<rdar://problem/4283967> REGRESSION: 3% regression on PLT from new FastMalloc
http://bugzilla.opendarwin.org/show_bug.cgi?id=5243
A number of optimizations to the new threadsafe malloc that make it actually as fast
as dlmalloc (I measured wrong before) and as memory-efficient as the system malloc.
- use fastMalloc for everything - it now gets applied to all new/delete allocations via a private inline operator new that is now included into every file via config.h.
- tweaked some of the numeric parameters for size classes and amount of wasted memory allowed per allocation - this saves on memory use and consequently improves speed.
- so long as the allocator is not being used on background threads, get the per-thread cache from a global variable instead of from pthread_getspecific, since the latter is slow.
- inline more functions, and force the ones GCC refuses to inline with attribute(always_inline), nearly all of these have one call site so inlining them has to be a win.
- use some tricks to calculate allocation size more efficiently and fewer times for small allocations, to avoid hitting the huge size table array.
- avoid hitting the per-thread cache on code paths that don't need it.
- implement inline assembly version of spinlock for PowerPC (was already done for x86)
- bindings/NP_jsobject.cpp:
- bindings/c/c_class.cpp:
- bindings/c/c_instance.cpp:
- bindings/c/c_runtime.cpp:
- bindings/c/c_utility.cpp:
- bindings/jni/jni_class.cpp:
- bindings/jni/jni_instance.cpp:
- bindings/jni/jni_jsobject.cpp:
- bindings/jni/jni_objc.mm:
- bindings/jni/jni_runtime.cpp:
- bindings/jni/jni_utility.cpp:
- bindings/npruntime.cpp:
- bindings/objc/WebScriptObject.mm:
- bindings/objc/objc_class.mm:
- bindings/objc/objc_instance.mm:
- bindings/objc/objc_runtime.mm:
- bindings/objc/objc_utility.mm:
- bindings/runtime.cpp:
- bindings/runtime_array.cpp:
- bindings/runtime_method.cpp:
- bindings/runtime_object.cpp:
- bindings/runtime_root.cpp:
- bindings/testbindings.cpp:
- bindings/testbindings.mm:
- kjs/array_object.cpp: (ArrayInstanceImp::ArrayInstanceImp): (ArrayInstanceImp::~ArrayInstanceImp): (ArrayInstanceImp::resizeStorage):
- kjs/bool_object.cpp:
- kjs/collector.cpp: (KJS::Collector::registerThread):
- kjs/config.h:
- kjs/debugger.cpp:
- kjs/error_object.cpp:
- kjs/function.cpp:
- kjs/function_object.cpp:
- kjs/identifier.cpp: (KJS::Identifier::rehash):
- kjs/internal.cpp: (KJS::Parser::saveNewNode): (KJS::clearNewNodes):
- kjs/interpreter.cpp:
- kjs/lexer.cpp: (Lexer::doneParsing): (Lexer::makeIdentifier): (Lexer::makeUString):
- kjs/list.cpp:
- kjs/math_object.cpp:
- kjs/nodes.cpp:
- kjs/nodes.h:
- kjs/nodes2string.cpp:
- kjs/number_object.cpp: (integer_part_noexp): (char_sequence):
- kjs/object.cpp:
- kjs/object_object.cpp:
- kjs/property_map.cpp:
- kjs/property_slot.cpp:
- kjs/protected_values.cpp: (KJS::ProtectedValues::rehash):
- kjs/reference.cpp:
- kjs/reference_list.cpp:
- kjs/regexp.cpp:
- kjs/regexp_object.cpp:
- kjs/scope_chain.cpp:
- kjs/scope_chain.h:
- kjs/string_object.cpp:
- kjs/testkjs.cpp:
- kjs/ustring.h:
- kjs/value.cpp:
- kxmlcore/Assertions.mm:
- kxmlcore/FastMalloc.cpp: (KXMLCore::InitSizeClasses): (KXMLCore::DLL_IsEmpty): (KXMLCore::DLL_Prepend): (KXMLCore::TCMalloc_Central_FreeList::Insert): (KXMLCore::TCMalloc_Central_FreeList::Remove): (KXMLCore::TCMalloc_Central_FreeList::Populate): (KXMLCore::TCMalloc_ThreadCache::Allocate): (KXMLCore::TCMalloc_ThreadCache::FetchFromCentralCache): (KXMLCore::fastMallocRegisterThread): (KXMLCore::TCMalloc_ThreadCache::GetCache): (KXMLCore::TCMalloc_ThreadCache::GetCacheIfPresent): (KXMLCore::TCMalloc_ThreadCache::CreateCacheIfNecessary): (KXMLCore::do_malloc): (KXMLCore::do_free): (KXMLCore::realloc):
- kxmlcore/FastMalloc.h: (operator new): (operator delete): (operator new[]): (operator delete[]):
- kxmlcore/HashTable.cpp:
- kxmlcore/TCSpinLock.h: (TCMalloc_SpinLock::Lock): (TCMalloc_SpinLock::Unlock): (TCMalloc_SlowLock):
- kxmlcore/TCSystemAlloc.cpp:
WebCore:
Reviewed by Darin.
<rdar://problem/4283967> REGRESSION: 3% regression on PLT from new FastMalloc
http://bugzilla.opendarwin.org/show_bug.cgi?id=5243
- use fastMalloc for everything - it now gets applied to all new/delete allocations via a private inline operator new that is now included into every file via config.h
- WebCore.xcodeproj/project.pbxproj:
- WebCorePrefix.h:
- khtml/css/css_base.cpp:
- khtml/css/css_base.h:
- khtml/css/css_computedstyle.cpp:
- khtml/css/css_ruleimpl.cpp:
- khtml/css/css_stylesheetimpl.cpp:
- khtml/css/css_valueimpl.cpp:
- khtml/css/css_valueimpl.h:
- khtml/css/csshelper.cpp:
- khtml/css/cssparser.cpp: (ValueList::ValueList): (ValueList::~ValueList): (ValueList::addValue): (CSSParser::CSSParser): (CSSParser::~CSSParser): (CSSParser::setupParser): (CSSParser::addProperty):
- khtml/css/cssstyleselector.cpp:
- khtml/css/cssstyleselector.h:
- khtml/dom/dom2_events.cpp:
- khtml/dom/dom2_traversal.cpp:
- khtml/dom/dom_misc.cpp:
- khtml/dom/dom_string.cpp:
- khtml/ecma/domparser.cpp:
- khtml/ecma/kjs_binding.cpp:
- khtml/ecma/kjs_css.cpp:
- khtml/ecma/kjs_dom.cpp:
- khtml/ecma/kjs_events.cpp:
- khtml/ecma/kjs_html.cpp: (KJS::KJS::Context2DFunction::callAsFunction): (KJS::Gradient::~Gradient): (KJS::Gradient::addColorStop): (KJS::Gradient::colorStops):
- khtml/ecma/kjs_navigator.cpp:
- khtml/ecma/kjs_proxy.cpp:
- khtml/ecma/kjs_range.cpp:
- khtml/ecma/kjs_traversal.cpp:
- khtml/ecma/kjs_views.cpp:
- khtml/ecma/kjs_window.cpp:
- khtml/ecma/xmlhttprequest.cpp:
- khtml/ecma/xmlserializer.cpp:
- khtml/editing/SelectionController.cpp:
- khtml/editing/append_node_command.cpp:
- khtml/editing/apply_style_command.cpp:
- khtml/editing/break_blockquote_command.cpp:
- khtml/editing/composite_edit_command.cpp:
- khtml/editing/delete_from_text_node_command.cpp:
- khtml/editing/delete_selection_command.cpp:
- khtml/editing/edit_command.cpp:
- khtml/editing/html_interchange.cpp:
- khtml/editing/htmlediting.cpp:
- khtml/editing/insert_into_text_node_command.cpp:
- khtml/editing/insert_line_break_command.cpp:
- khtml/editing/insert_node_before_command.cpp:
- khtml/editing/insert_paragraph_separator_command.cpp:
- khtml/editing/insert_text_command.cpp:
- khtml/editing/join_text_nodes_command.cpp:
- khtml/editing/jsediting.cpp:
- khtml/editing/markup.cpp:
- khtml/editing/merge_identical_elements_command.cpp:
- khtml/editing/move_selection_command.cpp:
- khtml/editing/rebalance_whitespace_command.cpp:
- khtml/editing/remove_css_property_command.cpp:
- khtml/editing/remove_node_attribute_command.cpp:
- khtml/editing/remove_node_command.cpp:
- khtml/editing/remove_node_preserving_children_command.cpp:
- khtml/editing/replace_selection_command.cpp:
- khtml/editing/set_node_attribute_command.cpp:
- khtml/editing/split_element_command.cpp:
- khtml/editing/split_text_node_command.cpp:
- khtml/editing/split_text_node_containing_element.cpp:
- khtml/editing/typing_command.cpp:
- khtml/editing/visible_position.cpp:
- khtml/editing/visible_range.cpp:
- khtml/editing/visible_text.cpp: (khtml::CircularSearchBuffer::~CircularSearchBuffer): (khtml::CircularSearchBuffer::CircularSearchBuffer):
- khtml/editing/visible_units.cpp:
- khtml/editing/wrap_contents_in_dummy_span_command.cpp:
- khtml/html/html_baseimpl.cpp:
- khtml/html/html_blockimpl.cpp:
- khtml/html/html_canvasimpl.cpp:
- khtml/html/html_documentimpl.cpp:
- khtml/html/html_elementimpl.cpp:
- khtml/html/html_formimpl.cpp:
- khtml/html/html_headimpl.cpp:
- khtml/html/html_imageimpl.cpp:
- khtml/html/html_inlineimpl.cpp:
- khtml/html/html_listimpl.cpp:
- khtml/html/html_miscimpl.cpp:
- khtml/html/html_objectimpl.cpp:
- khtml/html/html_tableimpl.cpp:
- khtml/html/htmlfactory.cpp:
- khtml/html/htmlnames.cpp:
- khtml/html/htmlparser.cpp:
- khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::enlargeBuffer): (khtml::HTMLTokenizer::enlargeScriptBuffer):
- khtml/khtml_events.cpp:
- khtml/khtml_part.cpp:
- khtml/khtmlview.cpp:
- khtml/misc/arena.cpp:
- khtml/misc/arena.h:
- khtml/misc/decoder.cpp:
- khtml/misc/formdata.cpp:
- khtml/misc/helper.cpp:
- khtml/misc/loader.cpp:
- khtml/misc/stringit.cpp:
- khtml/rendering/bidi.cpp:
- khtml/rendering/break_lines.cpp:
- khtml/rendering/font.cpp:
- khtml/rendering/render_arena.cpp:
- khtml/rendering/render_block.cpp:
- khtml/rendering/render_box.cpp:
- khtml/rendering/render_br.cpp:
- khtml/rendering/render_canvas.cpp:
- khtml/rendering/render_canvasimage.cpp: (RenderCanvasImage::~RenderCanvasImage): (RenderCanvasImage::createDrawingContext):
- khtml/rendering/render_container.cpp:
- khtml/rendering/render_flexbox.cpp:
- khtml/rendering/render_flow.cpp:
- khtml/rendering/render_form.cpp:
- khtml/rendering/render_frames.cpp:
- khtml/rendering/render_image.cpp:
- khtml/rendering/render_inline.cpp:
- khtml/rendering/render_layer.cpp:
- khtml/rendering/render_line.cpp:
- khtml/rendering/render_list.cpp:
- khtml/rendering/render_object.cpp:
- khtml/rendering/render_replaced.cpp:
- khtml/rendering/render_style.cpp:
- khtml/rendering/render_style.h:
- khtml/rendering/render_table.cpp:
- khtml/rendering/render_text.cpp:
- khtml/rendering/render_theme.cpp:
- khtml/rendering/render_theme_mac.mm:
- khtml/rendering/table_layout.cpp:
- khtml/xbl/xbl_binding.cpp:
- khtml/xbl/xbl_binding_manager.cpp:
- khtml/xbl/xbl_docimpl.cpp:
- khtml/xbl/xbl_protobinding.cpp:
- khtml/xbl/xbl_protohandler.cpp:
- khtml/xbl/xbl_protoimplementation.cpp:
- khtml/xbl/xbl_tokenizer.cpp:
- khtml/xml/EventNames.cpp:
- khtml/xml/dom2_eventsimpl.cpp:
- khtml/xml/dom2_eventsimpl.h:
- khtml/xml/dom2_rangeimpl.cpp:
- khtml/xml/dom2_rangeimpl.h:
- khtml/xml/dom2_traversalimpl.cpp:
- khtml/xml/dom2_traversalimpl.h:
- khtml/xml/dom2_viewsimpl.cpp:
- khtml/xml/dom2_viewsimpl.h:
- khtml/xml/dom_atomicstring.cpp:
- khtml/xml/dom_docimpl.cpp:
- khtml/xml/dom_docimpl.h:
- khtml/xml/dom_elementimpl.cpp:
- khtml/xml/dom_elementimpl.h:
- khtml/xml/dom_nodeimpl.cpp:
- khtml/xml/dom_nodeimpl.h:
- khtml/xml/dom_position.cpp:
- khtml/xml/dom_qname.cpp:
- khtml/xml/dom_stringimpl.cpp:
- khtml/xml/dom_stringimpl.h:
- khtml/xml/dom_textimpl.cpp:
- khtml/xml/dom_xmlimpl.cpp:
- khtml/xml/xml_tokenizer.cpp:
- khtml/xsl/xsl_stylesheetimpl.cpp:
- khtml/xsl/xslt_processorimpl.cpp:
- kwq/DOM-CSS.mm:
- kwq/DOM.mm:
- kwq/DOMEvents.mm:
- kwq/DOMHTML.mm:
- kwq/DOMInternal.mm: (DOMString::DOMString):
- kwq/DOMUtility.mm:
- kwq/DOMViews.mm:
- kwq/KWQAccObject.mm:
- kwq/KWQAccObjectCache.mm:
- kwq/KWQApplication.mm:
- kwq/KWQArrayImpl.h:
- kwq/KWQArrayImpl.mm:
- kwq/KWQBuffer.mm:
- kwq/KWQButton.mm:
- kwq/KWQCString.mm:
- kwq/KWQCharsets.mm:
- kwq/KWQClipboard.mm:
- kwq/KWQCollection.mm:
- kwq/KWQColor.mm:
- kwq/KWQComboBox.mm:
- kwq/KWQCursor.mm:
- kwq/KWQDateTime.mm:
- kwq/KWQDictImpl.mm:
- kwq/KWQEditCommand.mm:
- kwq/KWQEvent.mm:
- kwq/KWQExceptions.mm:
- kwq/KWQFile.mm:
- kwq/KWQFileButton.mm:
- kwq/KWQFont.mm:
- kwq/KWQFontFamily.h:
- kwq/KWQFontFamily.mm:
- kwq/KWQFontMetrics.mm:
- kwq/KWQFormData.mm:
- kwq/KWQFrame.mm:
- kwq/KWQGlobal.mm:
- kwq/KWQGuardedPtr.mm:
- kwq/KWQKCharsets.mm:
- kwq/KWQKConfigBase.mm:
- kwq/KWQKCookieJar.mm:
- kwq/KWQKCursor.mm:
- kwq/KWQKGlobal.mm:
- kwq/KWQKGlobalSettings.mm:
- kwq/KWQKHTMLFactory.mm:
- kwq/KWQKHTMLPart.cpp:
- kwq/KWQKHTMLPart.mm:
- kwq/KWQKHTMLPartBrowserExtension.mm:
- kwq/KWQKHTMLView.mm:
- kwq/KWQKHistoryProvider.mm:
- kwq/KWQKJavaAppletWidget.mm:
- kwq/KWQKJob.mm:
- kwq/KWQKJobClasses.mm:
- kwq/KWQKLocale.mm:
- kwq/KWQKPartsBrowserInterface.mm:
- kwq/KWQKPartsEvent.mm:
- kwq/KWQKPartsPart.mm:
- kwq/KWQKSSLKeyGen.mm:
- kwq/KWQKStandardDirs.mm:
- kwq/KWQKStringHandler.mm:
- kwq/KWQKURL.mm: (KURL::KURL): (KURL::decode_string): (KURL::parse): (KURL::encode_string): (encodeRelativeString):
- kwq/KWQKWin.mm:
- kwq/KWQKWinModule.mm:
- kwq/KWQLabel.mm:
- kwq/KWQLineEdit.mm:
- kwq/KWQListBox.mm:
- kwq/KWQListImpl.mm:
- kwq/KWQLoader.mm: (KWQIsResponseURLEqualToURL):
- kwq/KWQMapImpl.h:
- kwq/KWQMapImpl.mm:
- kwq/KWQMovie.mm:
- kwq/KWQObject.mm:
- kwq/KWQPageState.mm:
- kwq/KWQPaintDeviceMetrics.mm:
- kwq/KWQPainter.mm:
- kwq/KWQPalette.mm:
- kwq/KWQPen.mm:
- kwq/KWQPixmap.mm:
- kwq/KWQPoint.mm:
- kwq/KWQPointArray.mm:
- kwq/KWQPtrDictImpl.mm:
- kwq/KWQPushButton.mm:
- kwq/KWQRect.mm:
- kwq/KWQRegExp.mm:
- kwq/KWQRegion.mm:
- kwq/KWQRenderTreeDebug.cpp:
- kwq/KWQResourceLoader.mm:
- kwq/KWQScrollBar.mm:
- kwq/KWQScrollView.mm:
- kwq/KWQSignal.mm:
- kwq/KWQSignalStubs.mm:
- kwq/KWQSize.mm:
- kwq/KWQSlider.mm:
- kwq/KWQSlot.mm:
- kwq/KWQString.h:
- kwq/KWQString.mm: (ALLOC_CHAR): (REALLOC_CHAR): (DELETE_CHAR): (ALLOC_QCHAR): (REALLOC_QCHAR): (DELETE_QCHAR): (_printQStringAllocationStatistics): (allocateHandle): (KWQStringData::operator new): (KWQStringData::operator delete): (freeHandle):
- kwq/KWQStringList.mm:
- kwq/KWQStyle.mm:
- kwq/KWQTextArea.mm:
- kwq/KWQTextCodec.mm:
- kwq/KWQTextEdit.mm:
- kwq/KWQTextField.mm:
- kwq/KWQTextStream.mm:
- kwq/KWQTextUtilities.mm:
- kwq/KWQTimer.mm:
- kwq/KWQValueListImpl.h:
- kwq/KWQValueListImpl.mm:
- kwq/KWQVariant.mm:
- kwq/KWQVectorImpl.mm: (KWQVectorImpl::KWQVectorImpl): (KWQVectorImpl::~KWQVectorImpl): (KWQVectorImpl::clear): (KWQVectorImpl::resize): (KWQVectorImpl::assign):
- kwq/KWQWMatrix.mm:
- kwq/KWQWidget.mm:
- kwq/KWQWindowWidget.mm:
- kwq/WebCoreBridge.mm:
- kwq/WebCoreCache.mm:
- kwq/WebCoreEncodings.mm:
- kwq/WebCoreJavaScript.mm:
- kwq/WebCoreScriptDebugger.mm:
- kwq/WebCoreSettings.mm:
- kwq/WebCoreTextRendererFactory.mm:
- kwq/can-convert.mm:
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/JavaScriptCorePrefix.h
r6051 r10701 4 4 #define NULL ((void *)0) 5 5 #endif 6 7 #include <config.h>8 6 9 7 #include <assert.h> … … 43 41 #include <typeinfo> 44 42 43 #ifdef __cplusplus 44 #define new ("if you use new/delete make sure to include config.h at the top of the file"()) 45 #define delete ("if you use new/delete make sure to include config.h at the top of the file"()) 45 46 #endif 47 #endif
Note:
See TracChangeset
for help on using the changeset viewer.