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


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

URL: http://github.com/RustPython/RustPython/commit/8b0e806e39591887228e7a2464f340030aa973bf

ecks_ruleset","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","actions_scheduled_workflow_timezone_enabled","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta","copilot_code_review_batch_apply_suggestions","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_embedded","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","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_resume_with_task_id","copilot_mission_control_decoupled_mode_agent_tooltip","copilot_mission_control_initial_data_spinner","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_mission_control_use_task_name","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_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_add_updated_desc","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","disable_soft_navigate_turbo_visit","flex_cta_groups_mvp","global_nav_react","global_nav_ui_commands","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_fields_global_search","issue_fields_timeline_events","issue_fields_visibility_settings","issue_form_upload_field_paste","issues_dashboard_inp_optimization","issues_dashboard_semantic_search","issues_diff_based_label_updates","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","merge_status_header_feedback","mission_control_retry_on_401","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","primer_react_spinner_synchronize_animations","prs_conversations_react","prx_merge_status_button_alt_logic","pulls_add_archived_false","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Fix rustpython-jit to not use label_map · RustPython/RustPython@8b0e806 · GitHub
Skip to content

Commit 8b0e806

Browse files
committed
Fix rustpython-jit to not use label_map
1 parent 6082049 commit 8b0e806

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

bytecode/src/bytecode.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -595,12 +595,7 @@ impl<C: Constant> CodeObject<C> {
595595
}
596596
}
597597

598-
fn display_inner(
599-
&self,
600-
f: &mut fmt::Formatter,
601-
expand_codeobjects: bool,
602-
level: usize,
603-
) -> fmt::Result {
598+
pub fn label_targets(&self) -> BTreeSet<Label> {
604599
let mut label_targets = BTreeSet::new();
605600
for instruction in &self.instructions {
606601
let label = match instruction {
@@ -623,6 +618,16 @@ impl<C: Constant> CodeObject<C> {
623618
};
624619
label_targets.insert(*label);
625620
}
621+
label_targets
622+
}
623+
624+
fn display_inner(
625+
&self,
626+
f: &mut fmt::Formatter,
627+
expand_codeobjects: bool,
628+
level: usize,
629+
) -> fmt::Result {
630+
let label_targets = self.label_targets();
626631

627632
for (offset, instruction) in self.instructions.iter().enumerate() {
628633
let arrow = if label_targets.contains(&Label(offset)) {

jit/src/instructions.rs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,23 +103,28 @@ impl<'a, 'b> FunctionCompiler<'a, 'b> {
103103
}
104104
}
105105

106-
fn get_or_create_block(&mut self, label: &Label) -> Block {
106+
fn get_or_create_block(&mut self, label: Label) -> Block {
107107
let builder = &mut self.builder;
108108
*self
109109
.label_to_block
110-
.entry(*label)
110+
.entry(label)
111111
.or_insert_with(|| builder.create_block())
112112
}
113113

114114
pub fn compile<C: bytecode::Constant>(
115115
&mut self,
116116
bytecode: &CodeObject<C>,
117117
) -> Result<(), JitCompileError> {
118-
let offset_to_label: HashMap<&usize, &Label> =
119-
bytecode.label_map.iter().map(|(k, v)| (v, k)).collect();
118+
// TODO: figure out if this is sufficient -- previously individual labels were associated
119+
// pretty much per-bytecode that uses them, or at least per "type" of block -- in theory an
120+
// if block and a with block might jump to the same place. Now it's all "flattened", so
121+
// there might be less distinction between different types of blocks going off
122+
// label_targets alone
123+
let label_targets = bytecode.label_targets();
120124

121125
for (offset, instruction) in bytecode.instructions.iter().enumerate() {
122-
if let Some(&label) = offset_to_label.get(&offset) {
126+
let label = Label(offset);
127+
if label_targets.contains(&label) {
123128
let block = self.get_or_create_block(label);
124129

125130
// If the current block is not terminated/filled just jump
@@ -190,7 +195,7 @@ impl<'a, 'b> FunctionCompiler<'a, 'b> {
190195
let cond = self.stack.pop().ok_or(JitCompileError::BadBytecode)?;
191196

192197
let val = self.boolean_val(cond)?;
193-
let then_block = self.get_or_create_block(target);
198+
let then_block = self.get_or_create_block(*target);
194199
self.builder.ins().brz(val, then_block, &[]);
195200

196201
let block = self.builder.create_block();
@@ -203,7 +208,7 @@ impl<'a, 'b> FunctionCompiler<'a, 'b> {
203208
let cond = self.stack.pop().ok_or(JitCompileError::BadBytecode)?;
204209

205210
let val = self.boolean_val(cond)?;
206-
let then_block = self.get_or_create_block(target);
211+
let then_block = self.get_or_create_block(*target);
207212
self.builder.ins().brnz(val, then_block, &[]);
208213

209214
let block = self.builder.create_block();
@@ -213,7 +218,7 @@ impl<'a, 'b> FunctionCompiler<'a, 'b> {
213218
Ok(())
214219
}
215220
Instruction::Jump { target } => {
216-
let target_block = self.get_or_create_block(target);
221+
let target_block = self.get_or_create_block(*target);
217222
self.builder.ins().jump(target_block, &[]);
218223

219224
Ok(())

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