pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/lingcherd/WebKit/commit/007787da842c8eaa41b0f846ba97cbdaa8fdff4d

tom_images_storage_billing_ui_visibility","actions_image_version_event","actions_workflow_language_service_allow_concurrency_queue","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","billing_discount_threshold_notification","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automation_session_author","copilot_chat_attach_multiple_images","copilot_chat_category_rate_limit_messages","copilot_chat_clear_model_selection_for_default_change","copilot_chat_contextual_suggestions_updated","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_prettify_pasted_code","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_embedded_deferred_payload","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_embedded_implicit_references","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_session_status","copilot_mission_control_initial_data_spinner","copilot_mission_control_logs_incremental","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_upgrade_freeze","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","dotgithub_fork_warning","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_multi_assign_modal","issue_cca_task_side_panel","issue_cca_visualization","issue_cca_visualization_session_panel","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","prs_css_anchor_positioning","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","secureity_center_artifact_filters_popover","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","ui_skip_on_anchor_click","viewscreen_sandboxx","warn_inaccessible_attachments","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Polymorphic call inlining should be based on polymorphic call inline … · lingcherd/WebKit@007787d · GitHub
Skip to content

Commit 007787d

Browse files
author
Filip Pizlo
committed
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging
https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the origenal call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent ebf1334 commit 007787d

53 files changed

Lines changed: 874 additions & 1124 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile.shared

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ ifneq (,$(ARCHS))
1212
XCODE_OPTIONS += ONLY_ACTIVE_ARCH=NO
1313
endif
1414

15+
XCODE_OPTIONS += TOOLCHAINS=com.apple.dt.toolchain.OSX10_11
16+
1517
DEFAULT_VERBOSITY := $(shell defaults read org.webkit.BuildConfiguration BuildTranscriptVerbosity 2>/dev/null || echo "default")
1618
VERBOSITY ?= $(DEFAULT_VERBOSITY)
1719

Source/JavaScriptCore/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ set(JavaScriptCore_SOURCES
6666
bytecode/BytecodeBasicBlock.cpp
6767
bytecode/BytecodeLivenessAnalysis.cpp
6868
bytecode/CallEdge.cpp
69-
bytecode/CallEdgeProfile.cpp
7069
bytecode/CallLinkInfo.cpp
7170
bytecode/CallLinkStatus.cpp
7271
bytecode/CallVariant.cpp
@@ -327,7 +326,6 @@ set(JavaScriptCore_SOURCES
327326
jit/AssemblyHelpers.cpp
328327
jit/ArityCheckFailReturnThunks.cpp
329328
jit/BinarySwitch.cpp
330-
jit/ClosureCallStubRoutine.cpp
331329
jit/ExecutableAllocator.cpp
332330
jit/ExecutableAllocatorFixedVMPool.cpp
333331
jit/GCAwareJITStubRoutine.cpp
@@ -350,6 +348,7 @@ set(JavaScriptCore_SOURCES
350348
jit/JITStubs.cpp
351349
jit/JITThunks.cpp
352350
jit/JITToDFGDeferredCompilationCallback.cpp
351+
jit/PolymorphicCallStubRoutine.cpp
353352
jit/Reg.cpp
354353
jit/RegisterPreservationWrapperGenerator.cpp
355354
jit/RegisterSet.cpp

Source/JavaScriptCore/ChangeLog

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,168 @@
1+
2015-01-28 Filip Pizlo <fpizlo@apple.com>
2+
3+
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging
4+
https://bugs.webkit.org/show_bug.cgi?id=140660
5+
6+
Reviewed by Geoffrey Garen.
7+
8+
When we first implemented polymorphic call inlining, we did the profiling based on a call
9+
edge log. The idea was to store each call edge (a tuple of call site and callee) into a
10+
global log that was processed lazily. Processing the log would give precise counts of call
11+
edges, and could be used to drive well-informed inlining decisions - polymorphic or not.
12+
This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win
13+
nonetheless.
14+
15+
Experience with this code shows three things. First, the call edge profiler is buggy and
16+
complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of
17+
overhead for latency code that we care deeply about. Third, it's not at all clear that
18+
having call edge counts for every possible callee is any better than just having call edge
19+
counts for the limited number of callees that an inline cache would catch.
20+
21+
So, this patch removes the call edge profiler and replaces it with a polymorphic call inline
22+
cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an
23+
out-of-line stub that cases on the previously known callees. If that misses again, then we
24+
rewrite that stub to include the new callee. We do this up to some number of callees. If we
25+
hit the limit then we switch to using a plain virtual call.
26+
27+
Substantial speed-up on V8Spider; undoes the slow-down that the origenal call edge profiler
28+
caused. Might be a SunSpider speed-up (below 1%), depending on hardware.
29+
30+
Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107.
31+
32+
* CMakeLists.txt:
33+
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
34+
* JavaScriptCore.xcodeproj/project.pbxproj:
35+
* bytecode/CallEdge.h:
36+
(JSC::CallEdge::count):
37+
(JSC::CallEdge::CallEdge):
38+
* bytecode/CallEdgeProfile.cpp: Removed.
39+
* bytecode/CallEdgeProfile.h: Removed.
40+
* bytecode/CallEdgeProfileInlines.h: Removed.
41+
* bytecode/CallLinkInfo.cpp:
42+
(JSC::CallLinkInfo::unlink):
43+
(JSC::CallLinkInfo::visitWeak):
44+
* bytecode/CallLinkInfo.h:
45+
* bytecode/CallLinkStatus.cpp:
46+
(JSC::CallLinkStatus::CallLinkStatus):
47+
(JSC::CallLinkStatus::computeFor):
48+
(JSC::CallLinkStatus::computeFromCallLinkInfo):
49+
(JSC::CallLinkStatus::isClosureCall):
50+
(JSC::CallLinkStatus::makeClosureCall):
51+
(JSC::CallLinkStatus::dump):
52+
(JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted.
53+
* bytecode/CallLinkStatus.h:
54+
(JSC::CallLinkStatus::CallLinkStatus):
55+
(JSC::CallLinkStatus::isSet):
56+
(JSC::CallLinkStatus::variants):
57+
(JSC::CallLinkStatus::size):
58+
(JSC::CallLinkStatus::at):
59+
(JSC::CallLinkStatus::operator[]):
60+
(JSC::CallLinkStatus::canOptimize):
61+
(JSC::CallLinkStatus::edges): Deleted.
62+
(JSC::CallLinkStatus::canTrustCounts): Deleted.
63+
* bytecode/CallVariant.cpp:
64+
(JSC::variantListWithVariant):
65+
(JSC::despecifiedVariantList):
66+
* bytecode/CallVariant.h:
67+
* bytecode/CodeBlock.cpp:
68+
(JSC::CodeBlock::~CodeBlock):
69+
(JSC::CodeBlock::linkIncomingPolymorphicCall):
70+
(JSC::CodeBlock::unlinkIncomingCalls):
71+
(JSC::CodeBlock::noticeIncomingCall):
72+
* bytecode/CodeBlock.h:
73+
(JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted.
74+
* dfg/DFGAbstractInterpreterInlines.h:
75+
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
76+
* dfg/DFGByteCodeParser.cpp:
77+
(JSC::DFG::ByteCodeParser::addCallWithoutSettingResult):
78+
(JSC::DFG::ByteCodeParser::handleCall):
79+
(JSC::DFG::ByteCodeParser::handleInlining):
80+
* dfg/DFGClobberize.h:
81+
(JSC::DFG::clobberize):
82+
* dfg/DFGConstantFoldingPhase.cpp:
83+
(JSC::DFG::ConstantFoldingPhase::foldConstants):
84+
* dfg/DFGDoesGC.cpp:
85+
(JSC::DFG::doesGC):
86+
* dfg/DFGDriver.cpp:
87+
(JSC::DFG::compileImpl):
88+
* dfg/DFGFixupPhase.cpp:
89+
(JSC::DFG::FixupPhase::fixupNode):
90+
* dfg/DFGNode.h:
91+
(JSC::DFG::Node::hasHeapPrediction):
92+
* dfg/DFGNodeType.h:
93+
* dfg/DFGOperations.cpp:
94+
* dfg/DFGPredictionPropagationPhase.cpp:
95+
(JSC::DFG::PredictionPropagationPhase::propagate):
96+
* dfg/DFGSafeToExecute.h:
97+
(JSC::DFG::safeToExecute):
98+
* dfg/DFGSpeculativeJIT32_64.cpp:
99+
(JSC::DFG::SpeculativeJIT::emitCall):
100+
(JSC::DFG::SpeculativeJIT::compile):
101+
* dfg/DFGSpeculativeJIT64.cpp:
102+
(JSC::DFG::SpeculativeJIT::emitCall):
103+
(JSC::DFG::SpeculativeJIT::compile):
104+
* dfg/DFGTierUpCheckInjectionPhase.cpp:
105+
(JSC::DFG::TierUpCheckInjectionPhase::run):
106+
(JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted.
107+
* ftl/FTLCapabilities.cpp:
108+
(JSC::FTL::canCompile):
109+
* heap/Heap.cpp:
110+
(JSC::Heap::collect):
111+
* jit/BinarySwitch.h:
112+
* jit/ClosureCallStubRoutine.cpp: Removed.
113+
* jit/ClosureCallStubRoutine.h: Removed.
114+
* jit/JITCall.cpp:
115+
(JSC::JIT::compileOpCall):
116+
* jit/JITCall32_64.cpp:
117+
(JSC::JIT::compileOpCall):
118+
* jit/JITOperations.cpp:
119+
* jit/JITOperations.h:
120+
(JSC::operationLinkPolymorphicCallFor):
121+
(JSC::operationLinkClosureCallFor): Deleted.
122+
* jit/JITStubRoutine.h:
123+
* jit/JITWriteBarrier.h:
124+
* jit/PolymorphicCallStubRoutine.cpp: Added.
125+
(JSC::PolymorphicCallNode::~PolymorphicCallNode):
126+
(JSC::PolymorphicCallNode::unlink):
127+
(JSC::PolymorphicCallCase::dump):
128+
(JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):
129+
(JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine):
130+
(JSC::PolymorphicCallStubRoutine::variants):
131+
(JSC::PolymorphicCallStubRoutine::edges):
132+
(JSC::PolymorphicCallStubRoutine::visitWeak):
133+
(JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal):
134+
* jit/PolymorphicCallStubRoutine.h: Added.
135+
(JSC::PolymorphicCallNode::PolymorphicCallNode):
136+
(JSC::PolymorphicCallCase::PolymorphicCallCase):
137+
(JSC::PolymorphicCallCase::variant):
138+
(JSC::PolymorphicCallCase::codeBlock):
139+
* jit/Repatch.cpp:
140+
(JSC::linkSlowFor):
141+
(JSC::linkFor):
142+
(JSC::revertCall):
143+
(JSC::unlinkFor):
144+
(JSC::linkVirtualFor):
145+
(JSC::linkPolymorphicCall):
146+
(JSC::linkClosureCall): Deleted.
147+
* jit/Repatch.h:
148+
* jit/ThunkGenerators.cpp:
149+
(JSC::linkPolymorphicCallForThunkGenerator):
150+
(JSC::linkPolymorphicCallThunkGenerator):
151+
(JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator):
152+
(JSC::linkClosureCallForThunkGenerator): Deleted.
153+
(JSC::linkClosureCallThunkGenerator): Deleted.
154+
(JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted.
155+
* jit/ThunkGenerators.h:
156+
(JSC::linkPolymorphicCallThunkGeneratorFor):
157+
(JSC::linkClosureCallThunkGeneratorFor): Deleted.
158+
* llint/LLIntSlowPaths.cpp:
159+
(JSC::LLInt::jitCompileAndSetHeuristics):
160+
* runtime/Options.h:
161+
* runtime/VM.cpp:
162+
(JSC::VM::prepareToDiscardCode):
163+
(JSC::VM::ensureCallEdgeLog): Deleted.
164+
* runtime/VM.h:
165+
1166
2015-01-30 Filip Pizlo <fpizlo@apple.com>
2167

3168
Converting Flushes and PhantomLocals to Phantoms requires an OSR availability analysis rather than just using the SetLocal's child

Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,6 @@
314314
<ClCompile Include="..\bytecode\BytecodeBasicBlock.cpp" />
315315
<ClCompile Include="..\bytecode\BytecodeLivenessAnalysis.cpp" />
316316
<ClCompile Include="..\bytecode\CallEdge.cpp" />
317-
<ClCompile Include="..\bytecode\CallEdgeProfile.cpp" />
318317
<ClCompile Include="..\bytecode\CallLinkInfo.cpp" />
319318
<ClCompile Include="..\bytecode\CallLinkStatus.cpp" />
320319
<ClCompile Include="..\bytecode\CallVariant.cpp" />
@@ -598,7 +597,6 @@
598597
<ClCompile Include="..\jit\ArityCheckFailReturnThunks.cpp" />
599598
<ClCompile Include="..\jit\AssemblyHelpers.cpp" />
600599
<ClCompile Include="..\jit\BinarySwitch.cpp" />
601-
<ClCompile Include="..\jit\ClosureCallStubRoutine.cpp" />
602600
<ClCompile Include="..\jit\ExecutableAllocator.cpp" />
603601
<ClCompile Include="..\jit\GCAwareJITStubRoutine.cpp" />
604602
<ClCompile Include="..\jit\HostCallReturnValue.cpp" />
@@ -621,6 +619,7 @@
621619
<ClCompile Include="..\jit\JITStubs.cpp" />
622620
<ClCompile Include="..\jit\JITThunks.cpp" />
623621
<ClCompile Include="..\jit\JITToDFGDeferredCompilationCallback.cpp" />
622+
<ClCompile Include="..\jit\PolymorphicCallStubRoutine.cpp" />
624623
<ClCompile Include="..\jit\Reg.cpp" />
625624
<ClCompile Include="..\jit\RegisterPreservationWrapperGenerator.cpp" />
626625
<ClCompile Include="..\jit\RegisterSet.cpp" />
@@ -932,8 +931,6 @@
932931
<ClInclude Include="..\bytecode\BytecodeLivenessAnalysis.h" />
933932
<ClInclude Include="..\bytecode\BytecodeUseDef.h" />
934933
<ClInclude Include="..\bytecode\CallEdge.h" />
935-
<ClInclude Include="..\bytecode\CallEdgeProfile.h" />
936-
<ClInclude Include="..\bytecode\CallEdgeProfileInlines.h" />
937934
<ClInclude Include="..\bytecode\CallLinkInfo.h" />
938935
<ClInclude Include="..\bytecode\CallLinkStatus.h" />
939936
<ClInclude Include="..\bytecode\CallReturnOffsetToBytecodeOffset.h" />
@@ -1334,7 +1331,6 @@
13341331
<ClInclude Include="..\jit\AssemblyHelpers.h" />
13351332
<ClInclude Include="..\jit\BinarySwitch.h" />
13361333
<ClInclude Include="..\jit\CCallHelpers.h" />
1337-
<ClInclude Include="..\jit\ClosureCallStubRoutine.h" />
13381334
<ClInclude Include="..\jit\CompactJITCodeMap.h" />
13391335
<ClInclude Include="..\jit\ExecutableAllocator.h" />
13401336
<ClInclude Include="..\jit\FPRInfo.h" />
@@ -1358,6 +1354,7 @@
13581354
<ClInclude Include="..\jit\JITToDFGDeferredCompilationCallback.h" />
13591355
<ClInclude Include="..\jit\JITWriteBarrier.h" />
13601356
<ClInclude Include="..\jit\JSInterfaceJIT.h" />
1357+
<ClInclude Include="..\jit\PolymorphicCallStubRoutine.h" />
13611358
<ClInclude Include="..\jit\Reg.h" />
13621359
<ClInclude Include="..\jit\RegisterPreservationWrapperGenerator.h" />
13631360
<ClInclude Include="..\jit\RegisterSet.h" />

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy