Skip to content

Don't build Python for documentation only changes#74

Merged
berkerpeksag merged 2 commits intopython:masterfrom
berkerpeksag:travis-doc-build
Feb 14, 2017
Merged

Don't build Python for documentation only changes#74
berkerpeksag merged 2 commits intopython:masterfrom
berkerpeksag:travis-doc-build

Conversation

@berkerpeksag
Copy link
Copy Markdown
Member

No description provided.

@brettcannon brettcannon self-requested a review February 13, 2017 19:37
@brettcannon
Copy link
Copy Markdown
Member

Should also close python/core-workflow#14 when this gets merged.

@brettcannon
Copy link
Copy Markdown
Member

FYI GH-74 has some changes to .travis.yml.

@berkerpeksag berkerpeksag merged commit 157c0b8 into python:master Feb 14, 2017
@berkerpeksag berkerpeksag deleted the travis-doc-build branch February 14, 2017 09:57
ncoghlan pushed a commit that referenced this pull request Feb 19, 2017
* Add .travis.yml to 3.6 branch

* Travis CI: run rstlint.py in the docs job (#68)

Currently, http://buildbot.python.org/all/buildslaves/ware-docs
buildbot is only run as post-commit. For example, bpo-29521 (PR#41)
introduced two warnings, unnotified by the Travis CI docs job.

Modify the docs job to run toosl/rstlint.py.

Fix also the two minor warnings which causes the buildbot slave to
fail.

* Only run CI checks when appropriate files have changed (#74)

Closes python/core-workflow#14

* Use 'make check' instead of 'python3 tools/rstlint.py' (#96)
ncoghlan pushed a commit that referenced this pull request Feb 19, 2017
* Add .travis.yml to 3.5 branch

* Only run CI checks when appropriate files have changed (#74)

Closes python/core-workflow#14

* Travis CI: run rstlint.py in the docs job (#68)

Currently, http://buildbot.python.org/all/buildslaves/ware-docs
buildbot is only run as post-commit. For example, bpo-29521 (PR#41)
introduced two warnings, unnotified by the Travis CI docs job.

Modify the docs job to run toosl/rstlint.py.

Fix also the two minor warnings which causes the buildbot slave to
fail.

* Use 'make check' instead of 'python3 tools/rstlint.py' (#96)
jaraco pushed a commit that referenced this pull request Dec 2, 2022
jaraco added a commit to jaraco/cpython that referenced this pull request Feb 17, 2023
oraluben pushed a commit to oraluben/cpython that referenced this pull request Jul 15, 2023
* feat: execute jitted code in backward jumps

* nit: fix typos
sobolevn pushed a commit to sobolevn/cpython that referenced this pull request Apr 23, 2025
SonicField added a commit to SonicField/cpython that referenced this pull request Apr 22, 2026
Convert HIRBuilder::emitInlineExceptionMatch — the largest, most
complex method in the original 7-method remaining set (185-line C++
source with inline bytecode dispatch + 5-block + D-1774910012
invariant). Mirrors C++ HIRBuilder::emitInlineExceptionMatch @
builder.cpp:1329 (pre-conversion).

Tier 5 milestone: 70.1%. emitInlineExceptionMatch is the FIRST method
shipping with both encoding-clean AND invariant-preserved validation
per pythia python#73 (chat 14:39:something) gap closure: D-1774910012
falsifier (3 tests, 595734c) landed pre-port and preserved post-port
per testkeeper 8-test gate at chat 15:31:50Z.

W25-defer-aware A1 stub-heavy bytecode-parse design (theologian
chat 14:48:10Z pre-audit): ZERO new bridges. Pre-audit bridge-count
gate per supervisor 14:16:55Z policy (>1 → HALT for Option B
reconsideration); this method passed at 0 ≤ 1.

5 phases per pre-audit:
  P1: getitem CallStatic dispatch (pointer pre-resolved by C++ stub
      via JITRT_DictGetItem vs PyObject_GetItem)
  P2: exc_tc setup with depth-trim + LoadConst exc_type +
      JITRT_MatchAndClearException CallStatic + match_block /
      deopt_block CondBranch
  P3: match_tc setup + Py_None placeholder push (D-1774910012 PA)
      + bytecode dispatch loop (10 cases + default)
  P4: deopt_tc setup with re-push left/right + Snapshot + Deopt
  P5: ok block — RefineType in-place SSA-rename

3 separate PhxTranslationContext objects (PB):
  exc_tc copies from tc.frame
  match_tc copies from EXC_TC.FRAME (depth-trimmed)
  deopt_tc copies from TC.FRAME (original, NOT exc_tc)

Approach: C++ stub iterates info.except_body bytecodes via
BytecodeInstruction.nextInstr() and builds an opcode array with
pre-resolved const_obj (LOAD_CONST/RETURN_CONST) and
jump_target_block (JUMP_BACKWARD*). C body switches on the array.
Sibling C emit functions (hir_builder_emit_swap_c / load_fast_c /
store_fast_c / binary_op_c) called directly with extern decls.

OpcodeArrayEntry struct mirrored on C++ + C side (5 fields per entry:
opcode, oparg, base_offset, const_obj, jump_target_block). C++
static_assert on size sanity check.

D-1774910012 invariant (PA pitfall): Py_None placeholder pushed on
match_tc.frame.stack BEFORE dispatch loop; POP_EXCEPT case pops the
placeholder. Mirrors the inline exception handler deopt fix at
28b4ee1 from 2026-04-01. Failure mode: closure LOAD_DEREF in
except blocks → deopt stack mismatch → exc_info chain corruption
post-threshold (only triggers post-1000 calls). Preserved via the
falsifier in test_phoenix_jit_inline_except_closure.py (push 595734c).

Bytecode dispatch loop opcodes (10 handled + default):
  POP_EXCEPT (pops placeholder per PA), POP_TOP (pops TOS),
  SWAP, LOAD_FAST/_CHECK/_AND_CLEAR (3 cases), LOAD_CONST,
  STORE_FAST, BINARY_OP, RETURN_CONST, RETURN_VALUE,
  JUMP_BACKWARD/_NO_INTERRUPT (2 cases), default → deopt

Pitfalls addressed inline (theologian chat 14:48:10Z 8 pitfalls):
  PA: D-1774910012 Py_None placeholder + POP_EXCEPT pops
  PB: 3-TC frame-copy origins (each from correct source frame)
  PC: handler.depth depth-trim while-loop in P2
  PD: dispatch loop default → deopt (silent path; supervisor
      chat 15:30:08Z (b) JIT_DCHECK addition deferred to follow-up
      commit pending design clarification)
  PE: emitted_terminator semantics replaced by `goto match_loop_done`
      pattern in C
  PF: phx_frame_state_destroy on ALL 3 TCs at function end
  PG: sibling C emit functions take match_tc explicitly
  PH: stub-built opcode array with 5 fields per entry

JITRT_MatchAndClearException pointer passed from C++ stub via void*
(vs C-side direct reference) — avoids C-vs-C++ name mangling at
link time. Same pattern as getitem_fn.

testkeeper iter cycle:
  iter 1: 5 errors (extern decl signature mismatches on sibling
    emit functions + arg counts on LOAD_FAST/STORE_FAST)
  iter 2: 2 errors (binary_op_c PhxTranslationContext* sig +
    BCOffset→int conversion)
  iter 3: 1 link error (JITRT_MatchAndClearException name mangling)
  iter 4: PASS — JIT_BUILD_EXIT=0, full --clean BUILD_EXIT=0,
    8-test gate including D-1774910012 falsifier 8/8 PASS

W26 gate-hardening not triggered (clean build path). ZERO new
bridges held. Per pythia python#74 (chat 15:29:something): PA invariant
validated by falsifier; PB-PH rely on theologian's spec + reviewer
inspection. Mutation test per supervisor chat 15:30:08Z (a) is
gating push 59 PUSH AUTHORIZED — testkeeper to execute before
dual-arch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants