Conversation
- Introduced SSmalltalkScanner for token scanning and parsing. - Created SToken and its derived classes for token representation. - Implemented Stream class for handling source code streams. - Developed SCompiler for frontend compilation logic and character classification. - Added SSmalltalkCompiler to orchestrate the compilation pipeline. - Implemented Stretch class to represent source code ranges. - Introduced egg::string for Unicode string handling in the compiler. - Added error handling and semantic analysis capabilities.
- Introduced SMessageNode to represent message send nodes in the AST. - Implemented SMethodNode for method definitions, including method building and literal extraction. - Created SNumberNode and SStringNode for number and string literals, respectively. - Added SReturnNode for handling return statements in methods. - Developed SPragmaNode to manage pragmas, including primitive and FFI pragmas. - Established SSelectorNode for message selectors, supporting binary and keyword selectors. - Enhanced SParseNode and SScriptNode as base classes for AST nodes, providing common functionality. - Introduced SParseNodeVisitor interface for traversing the AST. - Implemented LiteralValue struct to represent various literal types in Smalltalk.
…ocessing - Introduced TonelReader.h for parsing Tonel-format .st files into ClassSpec. - Added CompilerTypes.h to define AST node and binding type identifiers. - Implemented MessageInliner for control-flow optimization in Message nodes. - Created SemanticVisitor for analyzing and transforming the AST, integrating MessageInliner. - Developed TreecodeEncoder to convert AST nodes into Egg treecode format. - Added necessary methods and structures to support encoding and inlining functionalities.
… scanning Separate module-loading responsibilities from bootstrapping: - Extract Loader class (Loader.h/cpp) to handle module resolution and loading from both .ems files and source directories - Move Bootstrapper to Bootstrap/ subdirectory, now focused solely on kernel bootstrapping from source - Delete old monolithic Bootstrapper.h from runtime/cpp root Introduce SymbolProvider abstraction (SymbolProvider.h/cpp): - BootstrapSymbolProvider: used during kernel bootstrap - DynamicSymbolProvider: uses the live symbol table at runtime - Runtime::switchToDynamicSymbolProvider_() for the transition - Remove inline symbolTableAt_() and knownSymbols map from Runtime Refactor GC root scanning in G1GC: - Extract resolveObject_() helper to deduplicate evacuation/marking logic shared between scanBehavior() and scanSlot() - Add scanRoot_(Object**) virtual method for properly scanning root pointers (stack frames, GCedRefs) instead of casting them to fake HeapObjects and using scan_from_to_ Other changes: - Add _error: undermessage and DictionaryNew primitive - Guard primitiveNewBytes/primitiveNewSized against non-SmallInteger args - Add Runtime::send_to_, send_to_with_ convenience methods - Refactor Launcher to bootstrap from source via Loader and use message sends to load/run modules - Remove dead code and debug leftovers from Runtime lookup cache - Fix unused variable in SSemanticVisitor>>visitAssignment:
Consolidate the string utility class under the Egg namespace to match the project convention. Move egg_string.h from Compiler/ to Utils/ and update all includes accordingly. Also update copyright years to 2025-2026 across affected files.
Extract ImageSegment as a lightweight base class providing only the common interface (header, memory bounds, exports, dumpObjects) used by Runtime. Move file-loading logic (load, fixPointerSlots, import resolution) into a new FileImageSegment subclass. BootstrappedKernel now extends ImageSegment directly, eliminating the null-stream constructor hack and dummy header workaround.
- primitiveAt: use failPrimitive instead of error() for type/bounds checks, including bounds check for bytes objects - primitiveSMIBitShift: detect overflow and fail the primitive - primitiveSMIIntDiv/IntQuot: implement floored division/modulo semantics to match Smalltalk // and \\ - underprimitiveBitShiftLeft/SMIBitShiftLeft: detect overflow and return nil instead of silently wrapping - Use existingSymbolFrom_ for doesNotUnderstand: lookup - Remove stale debug comments
…encies for egg executable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.