Skip to content

Add new observer API #5857

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 57 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
6a73552
Add zend_observer API
morrisonlevi Jul 10, 2020
45a8540
Add temporary observer extension
morrisonlevi Jul 13, 2020
ecfca90
Fix some issues
nikic Jul 13, 2020
1e7c59d
Guard observer begin handler and start adding end handler
morrisonlevi Jul 13, 2020
01308fd
WIP .end handler
morrisonlevi Jul 15, 2020
dc74744
Update for zend_get_zval_ptr changes
morrisonlevi Jul 15, 2020
23b7d37
Expand ternary short-hand for Windows
morrisonlevi Jul 15, 2020
1553336
Try fixing missing symbol
morrisonlevi Jul 15, 2020
947c955
Free OP1 of INCLUDE_OR_EVAL later so observers can look at it
morrisonlevi Jul 24, 2020
fe6b447
Move observer arena allocation for call handers to first-time register
SammyK Jul 25, 2020
3f617d1
Refactor where function init/begin/end handlers are called
SammyK Aug 7, 2020
a3e0139
Remove fcall init handlers from zend_call_function()
SammyK Aug 7, 2020
e5e7bce
Clean up
SammyK Aug 7, 2020
e7badd9
Clean up one more
SammyK Aug 7, 2020
71bbb1f
Add observer hooks to zend_test extension
SammyK Aug 7, 2020
0b13ca6
Merge branch 'master' into levim/observer
SammyK Aug 10, 2020
9837e2b
Add test for magic
SammyK Aug 10, 2020
ef1bcdc
Add basic generator support
SammyK Aug 10, 2020
f6edb80
Make cleaner test output
SammyK Aug 10, 2020
c66d659
Pass proper return value for generators
SammyK Aug 11, 2020
a6faa3b
Expose return values in tests
SammyK Aug 11, 2020
5f24f65
Add more generator tests
SammyK Aug 11, 2020
9e9bfc9
Remove temporary observer extension
SammyK Aug 12, 2020
b5b2762
Merge branch 'master' into levim/observer
SammyK Aug 12, 2020
2958a20
Fix memleak on TMPVAR with eval()
SammyK Aug 12, 2020
95bcf05
Fix arena allocation again :facepalm:
SammyK Aug 12, 2020
1e3b6be
Whitespace
SammyK Aug 21, 2020
1445b3b
Disable observer API when loaded via dl()
SammyK Aug 21, 2020
228807a
Wrap up some TODOs and cleanup
SammyK Aug 21, 2020
fc73942
Implement ZEND_OBSERVE_RETURN
SammyK Aug 24, 2020
b4731c5
Clean up fcall observer
morrisonlevi Aug 24, 2020
c76e8f5
Revert "Implement ZEND_OBSERVE_RETURN"
SammyK Aug 25, 2020
bb429b0
Implement SPEC(OBSERVER) for return handlers
SammyK Aug 25, 2020
c57324d
Add SPEC(OBSERVER) to DO_FCALL and friends
SammyK Aug 26, 2020
e3cdb9f
Add SPEC(OBSERVER) to INCLUDE_OR_EVAL
SammyK Aug 26, 2020
791c921
Add SPEC(OBSERVER) to fcall INIT handlers
SammyK Aug 26, 2020
0f78895
Add test for observing eval
SammyK Aug 26, 2020
bf56f27
Add SPEC(OBSERVER) to ZEND_HANDLE_EXCEPTION
SammyK Aug 26, 2020
b8e1408
Do only one observer check in zend_generator_resume
SammyK Aug 26, 2020
7792c18
Add test for observing closures
SammyK Aug 26, 2020
f0da73f
Merge remote-tracking branch 'upstream/master' into levim/observer
SammyK Aug 26, 2020
3f93dc8
Check for ZEND_OBSERVER_ENABLED before installing observers for closures
SammyK Aug 26, 2020
00a038b
Install observers only if enabled
SammyK Aug 26, 2020
1d2f9f6
Disable JIT when observer extension present
SammyK Aug 27, 2020
d22d421
Add SKIPIF's to the observer tests
SammyK Aug 27, 2020
96d1040
Add observer to zend_call_function
SammyK Aug 27, 2020
639a09e
Move observer install to first time fcall
SammyK Aug 27, 2020
971824b
Move LOAD_OPLINE_EX() back to the end of DO_UCALL handler
SammyK Aug 27, 2020
f9e10a0
Rename ZEND_SHOULD_OBSERVE_FN to ZEND_OBSERVABLE_FN
SammyK Aug 27, 2020
e4a6c45
Mark SPEC(OBSERVER) handlers as ZEND_VM_COLD
SammyK Aug 27, 2020
58a075f
Only register zend_test as observer when enabled
SammyK Aug 27, 2020
1698665
Add zend_test.observer.show_output INI setting
SammyK Aug 28, 2020
6181716
Skip JIT tests on non-JIT builds
SammyK Aug 28, 2020
63dba3d
Update observer arena size
morrisonlevi Aug 31, 2020
1ca066b
Add ZEND_API to some observer functions
morrisonlevi Aug 31, 2020
85083ff
Fix C++ compat for zend_observer.h
morrisonlevi Aug 31, 2020
6d5faf5
Merge branch 'master' into levim/observer
morrisonlevi Sep 1, 2020
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
Prev Previous commit
Next Next commit
Add SKIPIF's to the observer tests
  • Loading branch information
SammyK committed Aug 27, 2020
commit d22d421ffea1d9e4c60df7f39b13c25a8d27b08a
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_basic_01.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic observability of userland functions
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_basic_02.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic observability of userland methods
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_basic_03.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic observability of includes
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_basic_04.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic observability of includes only (no functions)
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_includes=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_basic_05.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic observability of functions only (no includes)
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_functions=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_closure_01.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic observability of closures
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_eval_01.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic eval observability
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_exception_01.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic observability of userland functions with uncaught exceptions
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_generator_01.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic generator observability
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_generator_02.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Generator with explicit return
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_generator_03.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Generator with 'yield from'
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_generator_04.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Generator with manual traversal
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down
2 changes: 2 additions & 0 deletions ext/zend_test/tests/observer_magic_01.phpt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
--TEST--
Observer: Basic magic method observability
--SKIPIF--
<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?>
--INI--
zend_test.observer.enabled=1
zend_test.observer.observe_all=1
Expand Down