Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
29fa983
jit: seed the blackhole miframe from every register, and resume past …
youknowone Jul 26, 2026
c6af6be
interp: port rpython/rlib/listsort.py TimSort and pick the sorter by …
youknowone Jul 26, 2026
cee312a
interp: sort through the list strategy, and reinstall the items in on…
youknowone Jul 26, 2026
ef4892b
jit: size the typed-array tids from the block they describe, and barr…
youknowone Jul 26, 2026
1119ecb
jit: admit the withdrawn escape-flush commit as the resume-past witness
youknowone Jul 26, 2026
ce4d21a
jit: emit setarrayitem_vable_r for the BUILD_LIST push
youknowone Jul 26, 2026
4b3db2f
dynasm: route GUARD_NOT_INVALIDATED's branch through the long-branch …
youknowone Jul 27, 2026
56a0baa
jit: force and write back the frame's locals for locals()/vars()
youknowone Jul 27, 2026
aad272e
jit: decline a code object past the jitcode label-id ceiling
youknowone Jul 27, 2026
7fdd4fd
jit: defer the escape-flush undo restore to the walk-end epilogue
youknowone Jul 27, 2026
12042eb
interp: force the frame before f_locals reads its fastlocals
youknowone Jul 27, 2026
7248ae3
jit: end the blackhole resume's deadframe root scope before the forwa…
youknowone Jul 27, 2026
dbd2ee4
wasm: register the collect_full GC hook and the user-del action
youknowone Jul 27, 2026
366c07b
interp: route every fd-1/fd-2 write through the embedder hooks
youknowone Jul 27, 2026
788a524
wasm: give the launcher a stderr channel, an exit status and the scri…
youknowone Jul 27, 2026
3701f96
interp: use one ZeroDivisionError message for every zero divisor
youknowone Jul 27, 2026
61151c6
interp: report the source length in "too many values to unpack" only …
youknowone Jul 27, 2026
32a0979
pyrex: absolutize the run filename before compiling, and read a pendi…
youknowone Jul 27, 2026
cf44e17
interp: append the object address to the native function repr
youknowone Jul 27, 2026
f058a3e
interp: spend the recursion budget per frame activation, not per call
youknowone Jul 27, 2026
ca7fc48
interp: name the blocked bases in the MRO error and the missing dict …
youknowone Jul 27, 2026
f50dfb2
interp: reject non-str add_note arguments with the argument-clinic wo…
youknowone Jul 27, 2026
0772c1a
jit: decline the LOAD_GLOBAL cell fold when the namespace operand is …
youknowone Jul 27, 2026
3b31134
_abc: propagate the structural-match marker through _abc_register
youknowone Jul 27, 2026
fff1d4d
interp: return an independent locals() snapshot for optimized frames
youknowone Jul 27, 2026
7c0d552
interp: resolve dir()'s frame the way locals() does
youknowone Jul 27, 2026
5d6bb35
interp: word builtin arity and keyword errors by the C calling conven…
youknowone Jul 27, 2026
750ebfe
interp: word builtin argument errors from the receiver, the module an…
youknowone Jul 28, 2026
216bcd5
operator: register the accelerator module as `_operator` only
youknowone Jul 28, 2026
b077a6e
stack_check: raise MAX_STACK_SIZE off wasm32 and clamp the length to …
youknowone Jul 28, 2026
0eb83d8
error: route uncaught exceptions through the structured renderer and …
youknowone Jul 28, 2026
0f9e4a6
math, descroperation: numeric-tower error and result parity
youknowone Jul 28, 2026
50fe2e9
baseobjspace: name the class, not the instance layout, in iteration e…
youknowone Jul 28, 2026
952b8e1
builtins: bind builtin arguments through the clinic two-branch arity …
youknowone Jul 28, 2026
9ea8224
jit: drop the blackhole abort frame-state rollback
youknowone Jul 28, 2026
d6c7e47
bench: add hot-loop-exit-then-class-statement double-execution regres…
youknowone Jul 28, 2026
c93a9ac
jit: decline the walk when a jitcode register read finds an unwritten…
youknowone Jul 28, 2026
212822d
Give str/bytes/bytearray/memoryview iteration its own iterator type
youknowone Jul 28, 2026
5f4914e
str: skip uncased letters in islower/isupper instead of counting them
youknowone Jul 28, 2026
35ee0a0
bytes: accept `delete=` and enforce the translate(table, /, delete) a…
youknowone Jul 28, 2026
7058369
interp: propagate a raised class's constructor error and name the ret…
youknowone Jul 28, 2026
af74328
interp: give array iteration its own type and qualify static-type dic…
youknowone Jul 28, 2026
322a50a
interp: exception __str__/__repr__ descriptors, slot deletion and Sys…
youknowone Jul 28, 2026
ed45d8a
wasm: intern trace reference constants into a per-loop GcTable
youknowone Jul 29, 2026
446bfba
wasm: root the deadframe exit-value copies
youknowone Jul 29, 2026
22cd029
jit: root the deadframe exit values across handle_fail and blackhole …
youknowone Jul 29, 2026
cf729b9
gc: re-gray black stack roots before the major cycle freezes survivors
youknowone Jul 29, 2026
a7de703
interp: write-barrier the flat-pycall callee locals array
youknowone Jul 29, 2026
4c31026
interp: fill in missing type-object slots for frame, set_iterator and…
youknowone Jul 29, 2026
d53a8e2
interp: plant the builtins dict in exec/eval namespaces
youknowone Jul 29, 2026
1fa1706
interp: apply the int_max_str_digits limit to format() and %-formatting
youknowone Jul 29, 2026
417df97
interp: raise IndentationError for indentation-shaped compile failures
youknowone Jul 29, 2026
fbc69fb
interp: dir() reads the locals key set through keys(), and super(cls,…
youknowone Jul 29, 2026
c3b1df3
interp: name the new class first in the __class__ assignment layout e…
youknowone Jul 29, 2026
2c956c4
imp/sys: fix is_builtin's -1 answer and set_coroutine_origin_tracking…
youknowone Jul 29, 2026
d21370d
extra_tests: add an xfail_ prefix convention and a README fixture
youknowone Jul 29, 2026
59a32e8
macros: bound the argument count by the full slot list for kwonly fun…
youknowone Jul 29, 2026
645ca51
_socket: check AF_INET address arity and name the exception types soc…
youknowone Jul 29, 2026
765215a
posix: accept path/dir_fd/follow_symlinks keywords on stat and lstat
youknowone Jul 29, 2026
eb68297
sys: add _getframemodulename and route getsizeof through __sizeof__
youknowone Jul 29, 2026
4a9389d
extra_tests: update pickle_seqiter and type_name_bare expectations
youknowone Jul 29, 2026
7dc04c6
gc: trace the header w_class edge of every #[pyre_class] instance
youknowone Jul 29, 2026
156d8d6
exceptions: declare the interp_exceptions typedef attributes as getsets
youknowone Jul 29, 2026
548103b
posix: implement chown/lchown, pathconf_names, and bytes-path directo…
youknowone Jul 29, 2026
d15e88d
imp: implement _imp.init_frozen instead of returning None
youknowone Jul 29, 2026
06d1784
compile: raise TabError when an indentation failure mixes tabs and sp…
youknowone Jul 29, 2026
eadf928
typedef: name builtin methods after their receiver in __qualname__
youknowone Jul 29, 2026
2025cef
sys/builtins: attach the stdio codec after bootstrap, and align input…
youknowone Jul 29, 2026
d64a2c4
typedef: publish descriptor __objclass__/__name__ as member descriptors
youknowone Jul 29, 2026
6b2ef66
typedef: type docstring, __rpow__ modulus, __prepare__ and __subclass…
youknowone Jul 30, 2026
4ed0fed
jit: attempt a cross-loop close once per walk instead of on every cro…
youknowone Jul 30, 2026
198783d
tests, sandbox: catch up the call sites the header-w_class and GcTabl…
youknowone Jul 30, 2026
ea111e4
builtins: gate the index probe on a type test and keep sum's residual…
youknowone Jul 30, 2026
e3f2fa9
interp: root the objects three stores read across an allocation
youknowone Jul 30, 2026
42da16d
posix: resolve a path once, keep directory names as bytes, and valida…
youknowone Jul 30, 2026
57854ac
sys: force the frame chain and clamp a negative depth in _getframemod…
youknowone Jul 30, 2026
b10d34c
interp: stop relabelling the exceptions a slice bound and math coerci…
youknowone Jul 30, 2026
a55678d
descroperation: run a sequence subclass's multiply override before sq…
youknowone Jul 30, 2026
27fa5ce
test: assert get() binds a tp_methods descriptor to a builtin carrier
youknowone Jul 30, 2026
b133267
interp: make the fd-1/fd-2 hooks process-global and byte-typed
youknowone Jul 30, 2026
c0b87bd
thread: give a spawned thread room for the stack_check byte budget
youknowone Jul 30, 2026
c9456e9
wasm: register a bridge's GC table only after the module compiles
youknowone Jul 30, 2026
828d74d
typedef: move the receiver-derived __qualname__ off method onto built…
youknowone Jul 30, 2026
9e5db20
error: read a SystemExit code the way _Py_HandleSystemExit does
youknowone Jul 30, 2026
7c30d20
binascii: bind the hex entry points' data argument duplicate-aware
youknowone Jul 30, 2026
3d32e7c
sys: convert a __sizeof__ result through the ssize range check
youknowone Jul 30, 2026
1dd420a
sys: hand sys.stdout.write's encoded bytes to the print hook unconverted
youknowone Jul 30, 2026
ffa19d3
binascii: bind each entry point by its declared clinic signature
youknowone Jul 30, 2026
b478696
jit_fnaddr: follow the PY_RECURSION_DEPTH accessor rename
youknowone Jul 31, 2026
0b627ce
posix: let chown/lchown propagate what path conversion raises
youknowone Jul 31, 2026
f433495
builtins: classify TabError from the failing indentation, not a file …
youknowone Jul 31, 2026
ef107d7
tests: list the header w_class edge in the itertools offset asserts a…
youknowone Jul 31, 2026
b914064
baseobjspace: send builtin-code carriers found in the type dict throu…
youknowone Jul 31, 2026
ba35507
bytes: stop prefixing the owner twice in the no-argument arity error
youknowone Jul 31, 2026
31bfc0a
review: keep a from_bytes iterator's own TypeError, and barrier the _…
youknowone Jul 31, 2026
18c9cd4
typedef: retag non-slot namespace entries as method_descriptor
youknowone Jul 31, 2026
909b2ec
gateway: add the missing slot names to is_slot_wrapper
youknowone Jul 31, 2026
c276df2
typedef: store a builtin __new__ as the bound carrier, not a staticme…
youknowone Jul 31, 2026
a1d0eb7
typedef: ready a multi-base builtin type so it registers on every base
youknowone Jul 31, 2026
711b412
wasm: preserve label live-ins and admit safe nested CA bridges
youknowone Jul 31, 2026
3e30890
jit: remove the MAJIT_LOG globals probe from the portal return path
youknowone Jul 31, 2026
e970fa5
jit: convert an aborted bridge carrier sub-walk instead of rewinding …
youknowone Aug 1, 2026
16e3786
wasm: defer host module compilation for straight-line traces and cach…
youknowone Aug 1, 2026
4f84062
typeobject: serialize the weak_subclasses vector behind a striped lock
youknowone Aug 1, 2026
dd75b1b
call: add enter_native_dispatch for the frameless recursion levels
youknowone Aug 1, 2026
72283ae
builtins: pick the sorted() comparator by exact type, not by layout
youknowone Aug 1, 2026
cd199e3
jit: keep the innermost-section vsd correction on its own frame, and …
youknowone Aug 1, 2026
9ad1d60
jit: allocate the concrete callee frame for the reconstructed bridge …
youknowone Aug 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 18 additions & 12 deletions majit/majit-backend-dynasm/src/aarch64/assembler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4058,18 +4058,12 @@ impl<'a> AssemblerARM64<'a> {
let fail_label = self.mc.new_dynamic_label();
if self.invalidated_flag_addr != 0 {
self.emit_mov_imm64(16, self.invalidated_flag_addr as i64);
// `CBNZ` reaches +-32KB, but this guard sits at the head of the
// peeled loop body while its recovery stub is emitted after the
// whole trace, so a long body puts the stub out of range and
// dynasm rejects the relocation at commit. Branch over an
// unconditional `B` (+-128MB) instead, the standard veneer.
let continue_label = self.mc.new_dynamic_label();
dynasm!(self.mc ; .arch aarch64
; ldrb w17, [x16]
; cbz w17, =>continue_label
; b =>fail_label
; =>continue_label
);
dynasm!(self.mc ; .arch aarch64 ; ldrb w17, [x16]);
// The recovery stub is emitted after the whole trace body, so a
// bare `cbnz` (19-bit, ±1MB) cannot reach it once the body passes
// 1MB — the same reach the other guards route around via
// `emit_bcond_to_label`.
self.emit_cbnz_w_to_label(17, fail_label);
}
self.append_guard_token_with_faillocs(op, op_index, fail_index, fail_label, faillocs);
}
Expand Down Expand Up @@ -4831,6 +4825,18 @@ impl<'a> AssemblerARM64<'a> {
self.emit_bcond_to_label(fail_cc, fail_label);
}

/// `cbnz W(reg), =>label` for a `label` that may sit past the 19-bit /
/// ±1MB reach of `cbnz`, using the same inversion as
/// [`Self::emit_bcond_to_label`]: `cbz skip; b =>label; skip:`.
fn emit_cbnz_w_to_label(&mut self, reg: u8, label: DynamicLabel) {
let skip = self.mc.new_dynamic_label();
dynasm!(self.mc ; .arch aarch64
; cbz W(reg), =>skip
; b =>label
; =>skip
);
}

/// Infer fail_arg_types from `op.type_` (via `opref_type`) or
/// `op.fail_arg_types`.
fn infer_fail_arg_types(&self, op: &Op, op_index: Option<usize>) -> Vec<Type> {
Expand Down
Loading
Loading