- 05 Nov, 2018 1 commit
-
-
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}
-
- 31 Oct, 2018 3 commits
-
-
Daniel Clifford authored
This is a reland of 0f15ed05 Original change's description: > [torque]: Implement catch handlers for try blocks > > In addition (and in combination), try statements now support "catch" > clauses at the end that catch JavaScript exceptions throw by any builtin > or runtime function contained in the try block: > > try { > ThrowTypeError(context, ...); > } > catch (e) { > // e has type Object > } > > Bug: v8:7793 > Change-Id: Ie285ff888c49c112276240f7360f70c8b540ed19 > Reviewed-on: https://chromium-review.googlesource.com/c/1302055 > Commit-Queue: Daniel Clifford <danno@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57169} Bug: v8:7793 Change-Id: I3c4182303acfdfa625654976bec372cf531d954f Reviewed-on: https://chromium-review.googlesource.com/c/1310295Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#57184}
-
Maya Lekova authored
This reverts commit 0f15ed05. Reason for revert: Braking Node.js integration, see https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20-%20node.js%20integration/3917 Original change's description: > [torque]: Implement catch handlers for try blocks > > In addition (and in combination), try statements now support "catch" > clauses at the end that catch JavaScript exceptions throw by any builtin > or runtime function contained in the try block: > > try { > ThrowTypeError(context, ...); > } > catch (e) { > // e has type Object > } > > Bug: v8:7793 > Change-Id: Ie285ff888c49c112276240f7360f70c8b540ed19 > Reviewed-on: https://chromium-review.googlesource.com/c/1302055 > Commit-Queue: Daniel Clifford <danno@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57169} TBR=danno@chromium.org,mstarzinger@chromium.org,tebbi@chromium.org Change-Id: Ib9e3155ef46cc46851c4ca8a2624fd7634238e13 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7793 Reviewed-on: https://chromium-review.googlesource.com/c/1310197Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#57177}
-
Daniel Clifford authored
In addition (and in combination), try statements now support "catch" clauses at the end that catch JavaScript exceptions throw by any builtin or runtime function contained in the try block: try { ThrowTypeError(context, ...); } catch (e) { // e has type Object } Bug: v8:7793 Change-Id: Ie285ff888c49c112276240f7360f70c8b540ed19 Reviewed-on: https://chromium-review.googlesource.com/c/1302055 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#57169}
-
- 08 Oct, 2018 1 commit
-
-
Daniel Clifford authored
In the process: - Convert TryLabelStatements into TryLabelExpressions - Change TryLabelExpressions to support only single label blocks and de-sugar try/labels into nested try/label statements. This allows the code in a label block to goto subsequent labels in the same try/label statement. - Make otherwise expressions either take IdentifierExpressions which get converted into simple label names OR atomarStatements, which make useful non-label operations, like 'break' and 'continue', useful together with otherwise. Non-label otherwise statements get de-sugared into try/label blocks. Bug: v8:7793 Change-Id: Ie56ede6306e2a3182f6aa1bb8750ed418bda01db Reviewed-on: https://chromium-review.googlesource.com/c/1266997 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#56447}
-
- 10 Sep, 2018 1 commit
-
-
Tobias Tebbi authored
This CL makes sure, that logical operators (||, &&) always have return type never. Together with a check that never is never passed as a function argument, this prevents faulty evaluation as in !(x || y). Before, the logical operators had a behavior similar to (bool labels Taken, NotTaken), with a fast exit if the left-hand side allowed shor-circuit evaluation, but returning the right-hand side otherwise. Since we want to allow existing (a || b || c) patterns in the codebase, this requires weakening the restriction that the left- and right-hand side need to have the same type. Now the possibilites are: bool, never never, bool never, never bool, bool constexpr bool, constexpr bool Bug: v8:8137 Change-Id: I9576b337dc4008ac58b4625e77fef4e73bcdd6e3 Reviewed-on: https://chromium-review.googlesource.com/1215162Reviewed-by:
Daniel Clifford <danno@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#55750}
-
- 08 Aug, 2018 1 commit
-
-
Tobias Tebbi authored
This adds a typeswitch statement typeswitch (e) case (x1 : Type1) { ... } case (x2 : Type2) { } ... ... case (xn : TypeN) { ... } This checks to which of the given types the result of evaluating e can be cast, in the order in which they are listed. So if an earlier type matches, a value of this type won't reach a later case. The type-checks are performed by calling the cast<T>() macro. The type of the argument passed to the cast macro is dependent on the case and excludes all types checked earlier. For example, in const x : Object = ... typeswitch (x) case (x : Smi) { ... } case (x : HeapNumber) { ... } case (x : HeapObject) { ... } there will be calls to cast<Smi>(Object) and cast<HeapNumber>(HeapObject), because after the Smi check we know that x has to be a HeapObject. With the refactored base.tq definition of cast, this will generate efficient code and avoid repeating the Smi check in the second case. The type system ensures that all cases are reachable and that the type given to the last case is safe without a runtime check (in other words, the union of all checked types covers the type of e). The cases can also be written as case (Type) { ... } , in which case the switched value is not re-bound with the checked type. Bug: v8:7793 Change-Id: Iea4aed7465d62b445e3ae0d33f52921912e095e3 Reviewed-on: https://chromium-review.googlesource.com/1156506 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#54958}
-
- 07 Aug, 2018 1 commit
-
-
Tobias Tebbi authored
Previously, we requested instantiation of generics prior to selecting a template overload, which resulted in unused templates being instantiated, possibly triggering unnecessary compile errors. Bug: v8:7793 Change-Id: I45f4bdbf8aa93749ece416c6c7458d64e6e051f5 Reviewed-on: https://chromium-review.googlesource.com/1154977 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#54950}
-
- 27 Jul, 2018 1 commit
-
-
Simon Zünd authored
This CL changes the for-loop so all parts are optional, allowing loops like: for (;;) {} for (;; ++i) {} ... R=danno@chromium.org, tebbi@chromium.org Bug: v8:7793 Change-Id: I7bf9ef9e59d55eb9ae9f38904a1c1106ae50df5a Reviewed-on: https://chromium-review.googlesource.com/1152727 Commit-Queue: Simon Zünd <szuend@google.com> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#54752}
-
- 20 Jul, 2018 1 commit
-
-
Marja Hölttä authored
This reduces the build steps from touching api.h: 269 -> 156 BUG=v8:7754,v8:7490 Change-Id: I75abaeea4cc78027a47304ff9b9f6b12bdb2b75e Reviewed-on: https://chromium-review.googlesource.com/1144929Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#54583}
-
- 17 Jul, 2018 1 commit
-
-
Simon Zünd authored
This CL adds local const bindings. This means that instead of generating TVARIABLEs for variables, we can generate simple TNodes. Example: macro FooBar(): { const kSomeSmi: Smi = 10; ... } This CL also enforces that variables with a constexpr type are bound using 'const' and not 'let'. R=tebbi@chromium.org Bug: v8:7793 Change-Id: Id20a18149df9fc374ce718bdb1478e3eabb6e6df Reviewed-on: https://chromium-review.googlesource.com/1138316 Commit-Queue: Simon Zünd <szuend@google.com> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#54479}
-
- 13 Jul, 2018 1 commit
-
-
Simon Zünd authored
This CL adds constants that can be defined in the module scope: const kConstexprConst: constexpr int31 = 5; const kIntptrConst: intptr = 4; const kSmiConst: Smi = 3; They are implemented by generating "mini-macros" that return the expression on the right-hand side of the assignment. Bug: v8:7793 Change-Id: I0a476cb3111707fad56bf15e9547b377c7adab37 Reviewed-on: https://chromium-review.googlesource.com/1114745 Commit-Queue: Simon Zünd <szuend@google.com> Reviewed-by:
Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#54430}
-
- 03 Jul, 2018 1 commit
-
-
Tobias Tebbi authored
Variables/return values with constexpr type cannot have multiple assignments. We check this now. For conditionals, it is important to always infer a non-constexpr type. This CL adds the ability to map any type (including union types) to be mapped to their non-constexpr variant. Conditionals infer their type as the non-constexpr version of a combination of the two branch types. In addition, this improves subtyping for constexpr types: If A extends B, then constexpr A extends constexpr B. This makes it necessary to clean up "constexpr String", which has nothing to do with tagged values. Bug: v8:7793 Change-Id: Ia4d3cd5dc98f45b0ec89adf05c5c6111a0e51cc6 Reviewed-on: https://chromium-review.googlesource.com/1122864 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#54167}
-
- 05 Jun, 2018 1 commit
-
-
Tobias Tebbi authored
Bug: v8:7793 Change-Id: I69e27cb1e8477ca0d64ad7a96ab256cae96339f4 Reviewed-on: https://chromium-review.googlesource.com/1086801Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53521}
-
- 29 May, 2018 1 commit
-
-
Simon Zünd authored
This CL is a proposal to add "checked" casts (CAST in CSA) to the Torque language. The CL adds the "unsafe_cast<>" operator that emits a "CAST". Example: let n: Number = ...; ... if (TaggedIsSmi(n)) { let m: Smi = unsafe_cast<Smi>(n); ... } The cast wont incur a runtime overhead now. R=tebbi@chromium.org Change-Id: I9fca90d1d11e61617ba0270e5022fd66200e2195 Reviewed-on: https://chromium-review.googlesource.com/1070151 Commit-Queue: Simon Zünd <szuend@google.com> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53416}
-
- 22 May, 2018 1 commit
-
-
Simon Zünd authored
This CL adds grammar support for function pointers to generic builtins. It also instantiates generic specializations when they are only used in an assignment to a function pointer. Example: builtin GenericBuiltinTest<T: type>(c: Context, param: T): Object { return Null; } let fnptr: builtin(Context, Smi) => Object = GenericBuiltinTest<Smi>; Change-Id: Ib7e5f47ffc05f14eb5d0b789936587263dfb961d Reviewed-on: https://chromium-review.googlesource.com/1068731 Commit-Queue: Simon Zünd <szuend@google.com> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53284}
-
- 16 May, 2018 2 commits
-
-
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}
-
Daniel Clifford authored
Including specialization, e.g.: // Declare parameterized generic macro GenericMacroTest<T: type>(param: T): Object { return Undefined; } // Declare specialization of generic GenericMacroTest<Object>(param: Object): Object { return param; } ... assert(GenericMacroTest<Smi>(0) == Undefined); assert(GenericMacroTest<Smi>(1) == Undefined); assert(GenericMacroTest<Object>(Null) == Null); assert(GenericMacroTest<Object>(False) == False); ... Known issue: specialization doesn't rigorously checked to verify that specialization signature precisely matches generic declaration. Change-Id: I9d9d96da4c5c8c9a76550844680e9e133a5edaed Reviewed-on: https://chromium-review.googlesource.com/1043986 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53203}
-
- 15 May, 2018 1 commit
-
-
Simon Zünd authored
This CL changes the generated C++ code for LabeledStatementBlocks to only emit labels if they are used. Prior to this CL, when a label was only used on one path of an if constexpr expression, and not at all anywhere else, the try/label construct would BIND a label that was not used, causing a CSA verification error. R=tebbi@chromium.org Change-Id: Ia81a0cd081b84528c95bbdbdb98b9ab51928e13f Reviewed-on: https://chromium-review.googlesource.com/1057247Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Commit-Queue: Simon Zünd <szuend@google.com> Cr-Commit-Position: refs/heads/master@{#53173}
-
- 13 May, 2018 2 commits
-
-
peterwmwong authored
Change-Id: I37ed9115c099f3d17f23a26348a1bbf5f773ee32 Reviewed-on: https://chromium-review.googlesource.com/1056668Reviewed-by:
Daniel Clifford <danno@chromium.org> Commit-Queue: Peter Wong <peter.wm.wong@gmail.com> Cr-Commit-Position: refs/heads/master@{#53136}
-
Daniel Clifford authored
In the process, add a few simple tests for "constexpr" expressions, which identified a few bugs that are also fixed in this CL. Change-Id: I97486c781572642d2b574b92133b1f9cda3db592 Reviewed-on: https://chromium-review.googlesource.com/1055493 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#53135}
-