Skip to content

Add some comments to assembler.c#1

Closed
pablogsal wants to merge 2 commits intomarkshannon:better-code-generationfrom
pablogsal:better-code-generation
Closed

Add some comments to assembler.c#1
pablogsal wants to merge 2 commits intomarkshannon:better-code-generationfrom
pablogsal:better-code-generation

Conversation

@pablogsal
Copy link

@pablogsal pablogsal commented Dec 18, 2019

Meanwhile I familiarise myself with the design, here is a first batch of comments that will help reading the source in the future.

@pablogsal pablogsal force-pushed the better-code-generation branch from 7f967e6 to 06a7f4a Compare December 18, 2019 01:37
@markshannon markshannon force-pushed the better-code-generation branch from b97c765 to 925ac6c Compare December 22, 2019 16:29
@pablogsal pablogsal force-pushed the better-code-generation branch from 06a7f4a to 6144691 Compare December 26, 2019 22:02
@markshannon markshannon force-pushed the better-code-generation branch 3 times, most recently from bcf616d to f09a15f Compare January 8, 2020 14:41
markshannon pushed a commit that referenced this pull request Jun 22, 2020
```
Direct leak of 8 byte(s) in 1 object(s) allocated from:
    #0 0x7f008bf19667 in __interceptor_malloc (/lib64/libasan.so.6+0xb0667)
    #1 0x7f007a0bee4a in subprocess_fork_exec /home/heimes/dev/python/cpython/Modules/_posixsubprocess.c:774
    #2 0xe0305b in cfunction_call Objects/methodobject.c:546
```

Signed-off-by: Christian Heimes <christian@python.org>
@pablogsal pablogsal closed this Nov 16, 2020
@pablogsal pablogsal deleted the better-code-generation branch November 16, 2020 23:06
markshannon pushed a commit that referenced this pull request Nov 23, 2020
* bpo-40791: Make compare_digest more constant-time.

The existing volatile `left`/`right` pointers guarantee that the reads will all occur, but does not guarantee that they will be _used_. So a compiler can still short-circuit the loop, saving e.g. the overhead of doing the xors and especially the overhead of the data dependency between `result` and the reads. That would change performance depending on where the first unequal byte occurs. This change removes that optimization.

(This is change #1 from https://bugs.python.org/issue40791 .)
markshannon pushed a commit that referenced this pull request Feb 10, 2021
```
Direct leak of 8 byte(s) in 1 object(s) allocated from:
    GH-0 0x7f008bf19667 in __interceptor_malloc (/lib64/libasan.so.6+0xb0667)
    GH-1 0x7f007a0bee4a in subprocess_fork_exec /home/heimes/dev/python/cpython/Modules/_posixsubprocess.c:774
    GH-2 0xe0305b in cfunction_call Objects/methodobject.c:546
```

Signed-off-by: Christian Heimes <christian@python.org>
(cherry picked from commit 0d3350d)

Co-authored-by: Christian Heimes <christian@python.org>
markshannon pushed a commit that referenced this pull request Feb 10, 2021
* bpo-40791: Make compare_digest more constant-time.

The existing volatile `left`/`right` pointers guarantee that the reads will all occur, but does not guarantee that they will be _used_. So a compiler can still short-circuit the loop, saving e.g. the overhead of doing the xors and especially the overhead of the data dependency between `result` and the reads. That would change performance depending on where the first unequal byte occurs. This change removes that optimization.

(This is change GH-1 from https://bugs.python.org/issue40791 .)
(cherry picked from commit 3172936)

Co-authored-by: Devin Jeanpierre <jeanpierreda@google.com>
markshannon pushed a commit that referenced this pull request Jun 22, 2022
)

Fix test_gdb.test_pycfunction() for Python built with clang -Og.
Tolerate inlined functions in the gdb traceback.

When _testcapimodule.c is built by clang -Og, _null_to_none() is
inlined in meth_varargs() and so gdb returns _null_to_none() as
the frame #1. If it's not inlined, meth_varargs() is the frame #1.
markshannon pushed a commit that referenced this pull request Jun 22, 2022
…python#91466)

Fix an uninitialized bool in exception print context.
    
`struct exception_print_context.need_close` was uninitialized.
    
Found by oss-fuzz in a test case running under the undefined behavior sanitizer.
    
https://oss-fuzz.com/testcase-detail/6217746058182656
    
```
Python/pythonrun.c:1241:28: runtime error: load of value 253, which is not a valid value for type 'bool'
    #0 0xbf2203 in print_chained cpython3/Python/pythonrun.c:1241:28
    #1 0xbea4bb in print_exception_cause_and_context cpython3/Python/pythonrun.c:1320:19
    #2 0xbea4bb in print_exception_recursive cpython3/Python/pythonrun.c:1470:13
    #3 0xbe9e39 in _PyErr_Display cpython3/Python/pythonrun.c:1517:9
```
    
Pretty obvious what the ommission was upon code inspection.
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.

2 participants