- 23 Feb, 2021 1 commit
-
-
Seth Brenith authored
This change adds a new abstract type Lazy<T> which can be used to interoperate with CSA code that uses LazyNode. This new type has special code-generation rules because its generated type is not TNode<...> but std::function<TNode<...>()>. Torque code can do nothing with this type except pass it around, but passing it to the CSA function RunLazy is an easy way to execute the std::function and get back a normal value. Torque code can also create Lazy<T> values using the intrinsic function %MakeLazy, which takes the name of a macro as its first parameter, followed by arguments to that macro which will be passed when the LazyNode is evaluated. We use the macro's name because the language doesn't support taking references to macros, and implementing such a feature would be complicated. Bug: v8:7793 Change-Id: I09120960e3492dd51be0d4c57e14ff3826b99262 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2701752 Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#72964}
-
- 31 Jul, 2020 1 commit
-
-
Tobias Tebbi authored
This allows templates to preserve the type of implicit parameters to select a better ovleroad, without generally extending overload resolution to implicit parameters, which could be confusing. Bug: v8:7793 Change-Id: Ie57090a295b0b46d03789829b975fc16e2a9c5b9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2329630 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Seth Brenith <seth.brenith@microsoft.com> Cr-Commit-Position: refs/heads/master@{#69177}
-
- 30 Jun, 2020 1 commit
-
-
Daniel Clifford authored
e.g. the following is now valid Torque code: macro TestA(implicit c: Context)() {} macro TestB(): bool { return TestA(); } This is handy for more flexible usage of generics that may or may not use implicit parameters deep inside their specializations. Note that this change doesn't change the fundamental rigor (or lack thereof) around checking the usage of implicit parameters, which already do not require '_' before their parameter identifier if unused. It just silences errors in cases where a call site doesn't implicitly pass a parameter that ultimately doesn't have a use site and adds meaningful error messages in the case that it does. Bug: v8:7793 Change-Id: I559d06c0864a7e79fe52bee5a9a7af9941889748 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2274127 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#68618}
-
- 27 May, 2020 1 commit
-
-
Seth Brenith authored
This is a partial reland of https://crrev.com/c/v8/v8/+/2199640 . It allows scoped lookups to not crash during CompileCurrentAst, fixes the formatting in an error message, and includes an extra line for convenience when generating macros for bitfields. Change-Id: I7ed9f7d76b3ce5e2cc0f2580d7ba1953da340ae8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2216301Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Cr-Commit-Position: refs/heads/master@{#68018}
-
- 26 May, 2020 2 commits
-
-
Tobias Tebbi authored
Bug: v8:7793 Change-Id: I5eac73a2b437e5e2d4005f79b7807ae7a9ed78e8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2214829Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#67976}
-
Seth Brenith authored
This reverts commit 4e5fabae. Reason for revert: performance regressions chromium:1085305, chromium:1084978 Original change's description: > [torque][cleanup] Use more precise field types in a few classes > > This change updates some Torque-defined classes to include more precise > field types where possible. It also updates those classes to use > @generateCppClass. One field was removed because it's unused > (PrototypeInfo::validity_cell), and two fields in StackFrameInfo > actually became less precise because they're based on Script::name, > which is an embedder-provided untyped Local<Value>. (Automatically > generated accessors pointed out this bug easily.) > > This change also includes a couple of minor fixes in Torque. > > Change-Id: Ib2bc6c7165bb3612b6d344c0686a94165a568277 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2199640 > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67907} TBR=ulan@chromium.org,tebbi@chromium.org,verwaest@chromium.org,seth.brenith@microsoft.com Change-Id: I720821d8dc84ea0d79eb137f1c2507f75df9a107 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2211322Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67972}
-
- 19 May, 2020 1 commit
-
-
Seth Brenith authored
This change updates some Torque-defined classes to include more precise field types where possible. It also updates those classes to use @generateCppClass. One field was removed because it's unused (PrototypeInfo::validity_cell), and two fields in StackFrameInfo actually became less precise because they're based on Script::name, which is an embedder-provided untyped Local<Value>. (Automatically generated accessors pointed out this bug easily.) This change also includes a couple of minor fixes in Torque. Change-Id: Ib2bc6c7165bb3612b6d344c0686a94165a568277 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2199640 Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#67907}
-
- 15 Jan, 2020 1 commit
-
-
Tobias Tebbi authored
Bug: v8:7793 Change-Id: Ibf045274ae48bd58f8c99361f02e51860b1a4150 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1997443 Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Auto-Submit: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#65777}
-
- 31 Oct, 2019 1 commit
-
-
Tobias Tebbi authored
This has two advantages: - It improves error messages by avoiding wrong template instantiations. - More flexible overloads by disabling generics for overload resolution when their constraints are violated. Bug: v8:7793 Change-Id: I7d2b8ef736988e8de16d25a4a4b16b49e27c6a11 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1890097Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#64676}
-
- 24 Oct, 2019 1 commit
-
-
Tobias Tebbi authored
This expands the existing mechanism for generic structs to also cover abstract types. This involves: - Moving the SpecializationKey from StructType to Type, so that it's also available to AbstractType. - Moving the generic parameters out of the StructDeclaration AST node and using the existing GenericDeclaration AST node for generic structs and abstract types too. - The GenericStructType declarable gets generalized to GenericType. This will be useful for defining a Weak<T> type for weak pointers. Bug: v8:7793 Change-Id: I183b3a038a143cf0ae5888150104c4a025fd736c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1859623 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#64533}
-
- 21 Aug, 2019 1 commit
-
-
Georg Schmid authored
This CL consists of several preparatory steps for slices in Torque. Above all, it introduces a user-defined struct, torque_internal::Slice<T>, that performs bounds checking and returns references to elements in arrays. To enable this, several smaller changes were also made: - Constructors of internal classes such as torque_internal::Reference<T> now require a special 'Unsafe' argument, making it clear that there be dragons. - Struct methods are now declared during finalization. This allows instances of generic structs to have methods referring to the same struct. Previously, methods would be declared before the instance had been fully registered, leading to errors during type resolution. Furthermore, such methods were declared in a temporary namespace, that would then erroneously escape and lead to use-after-free issues. - Instances of TypeArgumentInference were not running in the correct (Torque) scopes, leading to type resolution errors. - The chain of ContextualVariable::Scope for any given ContextualVariable (such as CurrentScope) can now be walked, simplifying debugging. R=jgruber@chromium.org, tebbi@chromium.org Bug: v8:7793 Change-Id: I36f808f63cc3ce441062dfc56f511f24f1e3121e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1758322 Commit-Queue: Georg Schmid <gsps@google.com> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#63314}
-
- 06 Aug, 2019 1 commit
-
-
Tobias Tebbi authored
Bug: v8:7793 Change-Id: I5f5461e4e3d31c6d3c2c1fba4ce48a4eb5db5d8e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1725625 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#63098}
-
- 31 Jul, 2019 1 commit
-
-
Georg Schmid authored
With the arrival of generic structs (https://chromium-review.googlesource.com/c/v8/v8/+/1714868) the existing type inference procedure for generic calls became incomplete, since it could not infer types that were only constrained as part of generic types. For instance, given struct Box<T: Type> { ... } macro unbox<T: type>(box: Box<T>): T the type argument (Smi) at the following call site const box: Box<Smi> = ...; unbox(box); could not be inferred. This CL re-implements the inference procedure and documents the semantics of type argument inference in Torque a bit more clearly. R=tebbi@chromium.org Change-Id: I868f16afbd9864b9c810ac49bc1639b467df939c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1720812 Commit-Queue: Georg Schmid <gsps@google.com> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#63005}
-
- 26 Jul, 2019 1 commit
-
-
Georg Schmid authored
This CL removes the built-in reference type in favor of a Torque-implemented generic struct, i.e., internal::Reference<T>. It also adds various infrastructure for getting and creating new generic struct instances, as well as matching against them. R=tebbi@chromium.org Change-Id: I1e3d6afe355a0603fa9c3ad789c6b8a97d1b3c26 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1718148 Commit-Queue: Georg Schmid <gsps@google.com> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#62939}
-
- 07 May, 2019 1 commit
-
-
Sigurd Schneider authored
Torque semantic analysis is now a four-stage process: 1. The TypeDeclarationVisitor introduces a TypeAlias for every TypeDeclaration* (or derived) in the Torque source, but does not process the TypeDeclaration* itself. 2. All aliases are resolved in a dependency respecting manner. This CL also changes struct member resolution to happen at this point already. Types for classes are created, but their members are not resolved to allow classes to mutually reference each other in their field types. 3. 'value' declarations (macros, etc.) are processed. 4. Members of classes are processed. Bug: v8:7793 Change-Id: I46108555a5cdf30df03c5d4399ec786ee6cc6df4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1584319 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#61264}
-
- 11 Apr, 2019 1 commit
-
-
Tobias Tebbi authored
This adds references to HeapObject fields to Torque. The syntax is based on Rust (which is essentially C pointer syntax). The type &T is a reference to T (which must be a scalar type for now). We can create references from field access expressions, using the addressof(&) operator: &obj.fieldname To read or assign a reference, we use the dereference(*) operator: *someref = *otherref This CL also uses references internally normal class field accesses, but only if there is no overload for field accessor functions. This allows to have overloaded field accessors for a subtype like FastJSArray. However, there is a change in behavior in that an operator ".fieldname" will stop reference creation and will therefore also stop write access to a class field of the same name. That's why this CL had to add a write overload ".length=" for FastJSArray. References desugar to a pair of a tagged HeapObject pointer and an untagged offset into this HeapObject. On the CSA-side, they are represented by the C++ struct struct TorqueReference { TNode<HeapObject> object; TNode<IntPtrT> offset; }; Bug: v8:7793 Change-Id: Ica6468d47847bd68fb6b85f731cf8fbe142fa401 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1557151 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#60780}
-
- 04 Mar, 2019 1 commit
-
-
Simon Zünd authored
This CL introduces a declaration_position_ field on TypeAlias, corresponding with the SourcePosition of the name of the Type where it is declared. This information is needed by the language server for "goto defintion". R=tebbi@chromium.org Bug: v8:7793 Change-Id: I0de2f7b7ba23b86de34441107ca9982d190c227f Reviewed-on: https://chromium-review.googlesource.com/c/1497952 Commit-Queue: Simon Zünd <szuend@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#60008}
-
- 13 Feb, 2019 1 commit
-
-
Nico Weber authored
For macros expanding to function definitions, I removed the spurious ; after macro invocations. For macros expandign to function declarations, I made the ; required and consistently inserted it. No behavior change. Bug: chromium:926235 Change-Id: Ib8085d85d913d74307e3481f7fee4b7dc78c7549 Reviewed-on: https://chromium-review.googlesource.com/c/1467545Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/master@{#59558}
-
- 04 Feb, 2019 1 commit
-
-
Daniel Clifford authored
In the process add missing base Torque functionality for 8-bit and 16-bit integers and Cast<> operators to make them easy to use. As a poster child, port the field declarations of SharedFunctionInfo to the class definition in base.tq. As a drive by: Add the missing GN dependency on class-definitions-from-dsl.h Bug: v8:7793 Change-Id: I76a41c2e81ffd1cbb90ac7a4ef8d4003ac86e8dc Reviewed-on: https://chromium-review.googlesource.com/c/1445882Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#59321}
-
- 02 Jan, 2019 1 commit
-
-
Tobias Tebbi authored
This CL doesn't change anything, but builds the infrastructure to inline selected macros into the Torque IR. Bug: v8:7793 Change-Id: Icdaa014633edfb314f9263c1a8ad84de4a9e9f97 Reviewed-on: https://chromium-review.googlesource.com/c/1392202 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#58502}
-
- 23 Nov, 2018 1 commit
-
-
Daniel Clifford authored
Bug: v8:7793 Change-Id: I2d5154eabd549c0518ca41dae6ef7bd047f3e1ef Reviewed-on: https://chromium-review.googlesource.com/c/1348072Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#57772}
-
- 19 Nov, 2018 1 commit
-
-
Tobias Tebbi authored
Bug: v8:7793 Change-Id: I4ce0008f56976102bad952ef2389f40845dcc15b Reviewed-on: https://chromium-review.googlesource.com/c/1340255Reviewed-by:
Daniel Clifford <danno@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#57605}
-
- 14 Nov, 2018 1 commit
-
-
Tobias Tebbi authored
This allows to call generic callables without mentioning all type parameters, if they can be deduced from the types passed as arguments. Bug: v8:7793 Change-Id: Idb37bb6b93c48bd6344c5be19da4e5b19d29593f Reviewed-on: https://chromium-review.googlesource.com/c/1335936Reviewed-by:
Daniel Clifford <danno@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#57515}
-
- 05 Nov, 2018 3 commits
-
-
Tobias Tebbi authored
This introduces a new syntax for identifiers and calls: modulename::foo. Such a name is resolved by trying to find a module modulename in one of the parent scopes and looking for foo there. So this roughly corresponds to C++ qualified namespace lookup. Bug: v8:7793 Change-Id: Iedc43e6ebe125cd74575cbbcbf990bbcc0155a1f Reviewed-on: https://chromium-review.googlesource.com/c/1309818 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#57238}
-
Tobias Tebbi authored
No longer use inheritance to associate Torque-generated assemblers with corresponding CSA subclasses. Instead, all references to CSA and CSA-derived assemblers are now explicitly qualified, by generating a short-lived assembler instance in-place. As a consequence, Torque files have to mention the assembler external macros live in. The CodeStubAssembler is the default for this and can be omitted. As a drive-by cleanup, also distinguish between names that are emitted in C++ and names that are intended to be read in error messages. This is relevant for generic instantiations, where the generated names are rather unreadably mangled. As a follow-up, it will be easy to allow for qualified access to different modules, thus implementing full namespace semantics for modules. Bug: v8:7793 Change-Id: Ie6f1b6b549b510fb49be2442393d898d5f130950 Reviewed-on: https://chromium-review.googlesource.com/c/1309636 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#57235}
-
Tobias Tebbi authored
- Name lookup in module scopes has namespace semantics now: All overloads from all parent modules are combined before overload resolution. - Allow overloads of different callables: runtime-functions, macros, builtins, and generics. - The duplication between the DeclarationVisitor and the ImplementationVisitor is removed: The DeclarationVisitor creates declarables for everything except for implicit generic specializations. The ImplementationVisitor iterates over declarables. The DeclarationVisitor only looks at the header of declarations, not at the body. - Modules become Declarable's, which will enable them to be nested. - Modules replace the existing Scope chain mechanism, which will make it easier to inline macros. - The DeclarationVisitor and Declarations become stateless. All state is moved to contextual variables and the GlobalContext. - Implicit specializations are created directly from the ImplementationVisitor. This will enable template parameter inference. - As a consequence, the list of all builtins is only available after the ImplementationVisitor has run. Thus GenerateBuiltinDefinitions has to move to the ImplementationVisitor. Also, this makes it necessary to resolve the link from function pointer types to example builtins only at this point. Bug: v8:7793 Change-Id: I61cef2fd3e954ab148c252974344a6e38ee2d01d Reviewed-on: https://chromium-review.googlesource.com/c/1304294 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#57231}
-
- 29 Oct, 2018 1 commit
-
-
Daniel Clifford authored
In the process implement TopType to express undefined values and transient types after they no longer are valid, as well as checks to make sure that transtioning callables are transitively marked to express if they or their call chain modify transient types. Bug: v8:7793 Change-Id: Idb237e878d3a511a4f460b6510ffd4876593951d Reviewed-on: https://chromium-review.googlesource.com/c/1297963 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#57052}
-
- 15 Oct, 2018 1 commit
-
-
Tobias Tebbi authored
While this is mostly a mechanical change to enable re-visiting macros for inlining, it has a few user-facing effects: - Labels and (variables, parameters, local constants) are handled separately, so they do not shadow each other. - A local variable or constant is not bound in its initializer. This allows code like: const x = 5; { const x = x + 1; } Bug: v8:7793 Change-Id: I968e1f93d92689737362c803342a797d312e95cd Reviewed-on: https://chromium-review.googlesource.com/c/1276628 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#56649}
-
- 11 Oct, 2018 1 commit
-
-
Daniel Clifford authored
The implicit parameter syntax adds a second parameter list before the explicit parameter list when declaring macros, builtins and runtime functions: extern macro MyMacro(implicit a: Smi)(b: Oddball); when calling the macro, only the formal parameters can be provided at the call site. The implicit parameters are implicitly looked-up by name in the scope of the call and prepended to the explicit parameter list. The values that are found by name for each implicit parameter must be castable the corresponding implicit parameter type: MyMacro(Null); // Error, a is not defined ... const a: Smi = 0; MyMacro(Null); // OK ... const a: Object = 0; MyMacro(Null); // Error, a has wrong type For external macros, builtins and runtime functions, the formal parameter list expected on the C++ side is the concatenation of the implicit and explicit parameter lists. As a drive-by: fix the formatting of typeswitch statements in the the presence of deferred-marked blocks and funky white space. Bug: v8:7793 Change-Id: I40da8405c706d7cdeca35367c9c954d0b33f6bf4 Reviewed-on: https://chromium-review.googlesource.com/c/1270996 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#56555}
-
- 04 Oct, 2018 1 commit
-
-
Tobias Tebbi authored
Bug: v8:7793 Change-Id: I5261122faf422987968ee1e405966f878ff910a1 Reviewed-on: https://chromium-review.googlesource.com/c/1245766 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#56391}
-
- 24 Jul, 2018 1 commit
-
-
Tobias Tebbi authored
Change-Id: I02c117ef66480eb73eb9cc1d4f80bbc64e9d3624 Reviewed-on: https://chromium-review.googlesource.com/1146655 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#54649}
-
- 17 Jul, 2018 1 commit
-
-
Daniel Clifford authored
Struct are bundles of value types. They are essentially just shorthand for passing around a group of individually defined values. Struct types are declared like this: struct A { x: Smi; y: int32; } and can be constructed explicitly like this: A{0, 0} Structs can be used wherever other types are used (e.g. variables, parameters, return values) except for parameter/return types of builtins and runtime functions. Struct use field access notation to set/get their values like this: let a: A = A{0, 0}; let b: Smi = a.x; a.y = 0; Change-Id: I9fd36a6514c37882831256a49a50809c5db75b56 Reviewed-on: https://chromium-review.googlesource.com/1122133 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#54501}
-
- 26 Jun, 2018 1 commit
-
-
Daniel Clifford authored
In the process, add a utility functions to automate printing out comma-separated lists. Also make sure that the << operator applies to "const Type&" rather than "const Type*" for consistency elsewhere and generally just good practice. Bug: v8:7793 Change-Id: I488e8383c4a9496552e63601738d6bcca0ca6e80 Reviewed-on: https://chromium-review.googlesource.com/1111854 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#54038}
-
- 06 Jun, 2018 1 commit
-
-
Daniel Clifford authored
This allows redifinitions of generics with the same name but differing parameter type lists, e.g. macro coerce<Dest: type>(from: HeapObject): Dest; coerce<int32>(from: HeapObject): int32 {...} macro coerce<Dest: type>(from: Smi): Dest; coerce<int32>(from: Smi): int32 {...} In order to allow multiple overloads of generic macros with the same name, a more nuanced lookup of calls has been implemented using the ParameterDifference utility class. There is still work to be done to unify when ParameterDifference is used for lookup (e.g. removing it from operator lookup when operators become simple aliases for macro names), but that work will be done in a separate CL. As part of this CL, the custom handling of "cast<>" operator in the .g4 grammar has been removed and replaced by a handful of equivalent overloads of a generic "cast" macro. Bug: v8:7793 Change-Id: Ibb2cdd3d58632b7f7f7ba683499f9688ae07f4f8 Reviewed-on: https://chromium-review.googlesource.com/1087873 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53562}
-
- 25 May, 2018 1 commit
-
-
Tobias Tebbi authored
Bug: v8:7754 Change-Id: I4664a86ca0daccdd977f6a1b89c0f33294f084a1 Reviewed-on: https://chromium-review.googlesource.com/1073149Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53353}
-
- 16 May, 2018 1 commit
-
-
Tobias Tebbi authored
This CL adds the new type expression builtin(Context, ArgType1, ...) => ReturnType and allows to use Torque-defined builtins as values of this type, as well as calling values of this type. The new function pointer types are subtypes of Code. Change-Id: Ib7ba3ce6ef7a8591a4c79230dd189fd25698d5b9 Reviewed-on: https://chromium-review.googlesource.com/1060056 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#53217}
-
- 08 May, 2018 1 commit
-
-
Tobias Tebbi authored
Change-Id: I61a594e194082577135dbc82b2673bf477105ef3 Reviewed-on: https://chromium-review.googlesource.com/1046949 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#53050}
-