Граф коммитов

93 Коммитов

Автор SHA1 Сообщение Дата
eileencodes 2796e4ece2 [PRISM] Implement once node for interpolated regex
This PR implements the once node on interpolated regexes.

There is a bug in Prism where the interpolated regex with the once flag
only works when there is not a local variable so the test uses a "1".
We'll need to fix that.
2023-11-20 12:42:05 -08:00
Jemma Issroff c5d5929443 [PRISM] Don't pop args to YieldNode 2023-11-20 12:12:34 -08:00
eileencodes 4dd11c067d Switching first argument in pm_interpolated_node_compile
This changes the first argument in `pm_interpolated_node_compile` to use
a pointer.
2023-11-20 07:05:09 -08:00
Jemma Issroff 775ed27d6d [PRISM] Initialize keyword to silence warning 2023-11-13 17:48:55 -05:00
Jemma Issroff ae1fad4cd7 [PRISM] Implement compilation for ForwardingArgumentssNode 2023-11-09 09:45:59 -03:00
Nobuyoshi Nakada 0f02fbd9ff Range check in pm_constant_id_lookup 2023-11-09 18:21:45 +09:00
Nobuyoshi Nakada e824b69a86 Remove useless casts 2023-11-09 18:21:45 +09:00
Matt Valentine-House 5c8d2c2d45 [PRISM] Always lookup idERROR_INFO consistently.
We know where it is in the iseq local table, because we forced it using
`iseq_set_exception_local_table` when compiling the BEGIN_NODE, so we
can always look it up from the same place.

Co-Authored-By Peter Zhu <peter@peterzhu.ca>
2023-11-08 20:28:58 -05:00
Jemma Issroff f9e34a1fd3 [PRISM] Add tests for OptionalKeywordParameterNode
This commit adds tests for the compilation of the
OptionalKeywordParameterNode, and fixes cases on the
RequiredKeywordParameterNode
2023-11-08 18:15:47 -03:00
Jemma Issroff 70e4ff9feb [PRISM] Added tests for ForwardingParameterNode, KeywordRestParameterNode 2023-11-08 18:15:47 -03:00
Jemma Issroff 26cff6ae2b [PRISM] Add tests for several parameters nodes
This commit adds tests for BlockParameterNode, RequiredParameterNode,
RequiredKeywordParameterNode and RestParameterNode
2023-11-08 18:15:47 -03:00
Jemma Issroff bc07b0b9e1 [PRISM] Implement compilation for different parameters
This commit compiles most parameter types, setting appropriate values on
the ISEQ_BODY. It also adds tests for callers and callees of methods,
using many versions of tests from bootstraptest
2023-11-07 15:15:16 -03:00
Matt Valentine-House e7bdd9e498 [PRISM] Move Local table setup into EnsureNode compilation 2023-11-07 14:03:57 +00:00
Matt Valentine-House b7d5a63b9a [PRISM] Don't generate leave insns for Ensure nodes 2023-11-07 14:03:57 +00:00
Matt Valentine-House 8ef7f27321 [PRISM] CompileEnsureNode 2023-11-07 14:03:57 +00:00
Matt Valentine-House 237b85c256 [PRISM] PM_COMPILE into a specified LINK_ANCHOR 2023-11-07 14:03:57 +00:00
Jemma Issroff f6ba87ca88 [PRISM] Implement compilation for MultiWriteNodes, fix MultiTargetNodes
Compilation now works for MultiWriteNodes and MultiTargetNodes, with
nesting on MultiWrites. See the tests added in this commit for example
behavior.
2023-11-06 10:39:07 -03:00
Matt Valentine-House cdb410f688 [PRISM] Fix stack consistency with Popped begin
When a begin node is popped it only needs to putnil if that nil is going
to be the return value, otherwise it can successfully be optimised out.
2023-11-03 15:19:28 +00:00
Matt Valentine-House dcb9ded6c9 [PRISM] Fix CallNode with arguments when popped
Previously emitting a call node with an argument followed by another
node would cause the argument to be mistakenly omitted from the argument
list causing a stack underflow.

```
PRISM: **************************************************
-- raw disasm--------
   0000 putself                                                          (   0)
   0001 send                 <calldata:puts, 1>, nil                     (   0)
*  0004 pop                                                              (   0)
   0005 putobject            1                                           (   0)
   0007 leave                                                            (   0)
---------------------
```
2023-11-03 07:28:05 +00:00
Jemma Issroff c6f5c64639 [PRISM] Fix popped for ForNode 2023-11-02 17:46:43 -03:00
Jemma Issroff 7f18448a8e [PRISM] Fix popped for CallOperatorWriteNode 2023-11-02 17:46:43 -03:00
Jemma Issroff d8bdb15a8b [PRISM] Fix popped for Call{And,Or}WriteNode 2023-11-02 17:46:43 -03:00
Jemma Issroff 5acced49c2 [PRISM] Fix popped for SingletonClassNode 2023-11-02 17:46:43 -03:00
Jemma Issroff 33f18b3d2f [PRISM] Fix popped for CaseNode 2023-11-02 17:46:43 -03:00
Jemma Issroff 62baf723b6 [PRISM] Fix popped for AssocSplatNode 2023-11-02 17:46:43 -03:00
Jemma Issroff 8b4b3b1d38 [PRISM] Fix popped for MatchWriteNode 2023-11-02 17:46:43 -03:00
Jemma Issroff 0359f9ca67 [PRISM] Fix popped for ConstantPathOperatorWriteNode 2023-11-02 17:46:43 -03:00
Jemma Issroff ddf12e8a3b [PRISM] Fix popped for ConstantPathOrWriteNode 2023-11-02 17:46:43 -03:00
Jemma Issroff ca24136da6 [PRISM] Fix popped on DefinedNode 2023-11-02 17:46:43 -03:00
Jemma Issroff 698654ca84 [PRISM] Fixed popped for ConstantPathAndWriteNode 2023-11-02 17:46:43 -03:00
Kevin Newton 717fb5bb0b [prism] Use a pointer for optional node list 2023-11-01 10:36:21 -04:00
Jemma Issroff b7a3e2e71d
[PRISM] Remove unnecessary variable 2023-10-31 15:57:25 -03:00
Jemma Issroff b3744c749d [PRISM] Implement compilation for SuperNode 2023-10-31 13:59:40 -03:00
Jemma Issroff 57748ef2a2 [PRISM] Compile forwarding super node 2023-10-31 13:08:09 -03:00
Jemma Issroff 85ad102532 [PRISM] Implement compilation for PostExecutionNode
This commit implements compilation for the PostExeuctionNode by
using the ScopeNode to create child iseqs where appropriate.
2023-10-31 12:51:06 -03:00
HParker d8a9245513 Add defined array node 2023-10-31 07:01:00 -03:00
HParker b05a7bc512 compile defined with nested constants and stovetop 2023-10-31 07:01:00 -03:00
Matt Valentine-House 962c62057f Fix warning in Prism compile For Node 2023-10-31 09:01:56 +00:00
Jemma Issroff f0b7895637 [PRISM] Implement all argument types for CallNodes 2023-10-30 18:07:04 -03:00
Matt Valentine-House b17b0336b6 Document TEMP_CONSTANT_IDENTIFIER 2023-10-30 19:44:42 +00:00
Matt Valentine-House 9249b8622b Move constant indexing into rb_translate_prism 2023-10-30 19:44:42 +00:00
Matt Valentine-House 5dfba84cff [Prism] Compile ForNode
Fixes ruby/prism#1648
2023-10-30 19:44:42 +00:00
Matt Valentine-House b0f715fa3b More accurate functions documentation 2023-10-30 19:44:42 +00:00
Kevin Newton e3258dd627
Integrate new prism multi target names 2023-10-26 15:03:33 -04:00
eileencodes a082e560bb [PRISM] Implement regex encoding flags
Added the  correct encoding to the allocated regex. This required making
a new method to set the encoding and pass that to `rb_enc_reg_new`
instead of `rb_reg_new`. The former `rb_reg_new` would set the encoding
to ASCII8BIT regardless of encoding flag.
2023-10-26 11:11:52 -07:00
Jemma Issroff 4f8a33eb05 [PRISM] Cleanup macro usage for common ADD_INSN 2023-10-26 12:47:28 -03:00
HParker 8f4a8cd05b teach prism define to compile basic types 2023-10-26 11:54:26 -03:00
Jemma Issroff 9570a88bb3 [PRISM] Implement compilation for ConstantPathAndWriteNode 2023-10-26 11:42:15 -03:00
Jemma Issroff ec2878c11b [PRISM] Implement compilation for ConstantPathOrWriteNode 2023-10-26 11:42:15 -03:00
Jemma Issroff b5f61750b9 [PRISM] Implemented ConstantPathOperatorWriteNode 2023-10-26 11:42:15 -03:00