v8/test/cctest
Clemens Hammacher 9e995e12ca [assembler] Make Register et al. real classes
Up to now, each architecture defined all Register types as structs,
with lots of redundancy. An often found comment noted that they cannot
be classes due to initialization order problems. As these problems are
gone with C++11 constexpr constants, I now tried making Registers
classes again.
All register types now inherit from RegisterBase, which provides a
default set of methods and named constructors (like ::from_code,
code(), bit(), is_valid(), ...).
This design allows to guarantee an interesting property: Each register
is either valid, or it's the no_reg register. There are no other
invalid registers. This is guaranteed statically by the constexpr
constructor, and dynamically by ::from_code.

I decided to disallow the default constructor completely, so instead of
"Register reg;" you now need "Register reg = no_reg;". This makes
explicit how the Register is initialized.

I did this change to the x64, ia32, arm, arm64, mips and mips64 ports.
Overall, code got much more compact and more safe. In theory, it should
also increase performance (since the is_valid() check is simpler), but
this is probably not measurable.

R=mstarzinger@chromium.org

Change-Id: I5ccfa4050daf4e146a557970e9d37fd3d2788d4a
Reviewed-on: https://chromium-review.googlesource.com/650927
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47847}
2017-09-06 12:13:09 +00:00
..
compiler [wasm] Remove 'using namespace' from cctest/wasm 2017-09-01 13:49:24 +00:00
ffi Add COMPONENT tags to OWNERS files where appropriate 2017-05-22 10:15:28 +00:00
heap Remove weak-list of optimized JS functions. 2017-09-05 04:30:19 +00:00
interpreter [storeic] Drop duplicate stubs for each LanguageMode 2017-09-05 18:00:39 +00:00
libplatform Reland "Switch tracing to use v8::TracingController" 2017-07-03 11:49:23 +00:00
libsampler Include only stuff you need, part 6: Fix cctest.h. 2016-09-01 12:02:16 +00:00
parsing [parser] Skipping inner funcs: fix sloppy block generators. 2017-08-31 05:42:36 +00:00
wasm [asmjs] --validate-asm should not expose the WASM API. 2017-09-04 13:31:32 +00:00
BUILD.gn [wasm] Remove 'using namespace' from cctest/wasm 2017-09-01 13:49:24 +00:00
cctest_exe.isolate [Swarming] Isolate perf tests. 2016-02-15 11:17:18 +00:00
cctest.cc Rename "NoBarrier" memory operations to "Relaxed". 2017-05-30 07:44:37 +00:00
cctest.gyp [wasm] Remove 'using namespace' from cctest/wasm 2017-09-01 13:49:24 +00:00
cctest.h Delegate getting current wall-clock time to the Platform interface. 2017-08-30 06:28:09 +00:00
cctest.isolate [Interpreter] Refactor bytecode generator test suite. 2016-02-25 12:07:19 +00:00
cctest.status PPC: disable SimdLoadStoreLoad 2017-08-25 02:26:25 +00:00
DEPS Add DEPS files and run checkdeps in presubmit check 2014-06-03 13:39:42 +00:00
expression-type-collector-macros.h Make typing-asm match spec more closely around load/store, add more tests. 2015-11-30 21:11:47 +00:00
gay-fixed.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
gay-fixed.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
gay-precision.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
gay-precision.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
gay-shortest.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
gay-shortest.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
log-eq-of-logging-and-traversal.js Fix test-log/EquivalenceOfLoggingAndTraversal 2013-08-26 14:56:23 +00:00
OWNERS Remove x87 port 2017-07-18 18:20:40 +00:00
print-extension.cc Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
print-extension.h Remove deprecated functions the smaller half of the remaing tests 2015-11-17 12:42:44 +00:00
profiler-extension.cc Introduce v8::CpuProfiler::New and v8::CpuProfiler::Dispose API. 2016-07-08 15:01:10 +00:00
profiler-extension.h Introduce v8::CpuProfiler::New and v8::CpuProfiler::Dispose API. 2016-07-08 15:01:10 +00:00
scope-test-helper.h [parser] Skipping inner funcs: Associate data to SharedFunctionInfo, not Script. 2017-06-30 11:12:52 +00:00
setup-isolate-for-tests.cc Reland "[snapshot] Move builtins generation into mksnapshot" 2017-04-07 13:31:29 +00:00
setup-isolate-for-tests.h [cleanup] Remove unnecessary entries in cctest.status 2017-06-09 16:05:09 +00:00
test-access-checks.cc Fix receiver checks for v8::Function on a remote context receiver. 2017-02-22 10:13:24 +00:00
test-accessor-assembler.cc [csa] Enforce using BIND macro 2017-05-19 16:47:56 +00:00
test-accessors.cc [cctest] Simplify the majority of callers of CcTest::CollectAllGarbage 2017-04-27 17:20:54 +00:00
test-allocation.cc Revert "[Memory] Improve OOM callback tests." 2017-08-14 09:20:38 +00:00
test-api-accessors.cc Remove experimental fast accessor builder API 2017-03-14 08:14:48 +00:00
test-api-interceptors.cc [api] Do not re-use PropertyCallbackArguments 2017-09-06 08:31:56 +00:00
test-api.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-api.h Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-array-list.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-arm64.cc [assembler] Make Register et al. real classes 2017-09-06 12:13:09 +00:00
test-assembler-arm.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-ia32.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-mips64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-mips.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-ppc.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-s390.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-x64.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-atomicops.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-bignum-dtoa.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-bignum.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-bit-vector.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-circular-queue.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-cache.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +00:00
test-code-layout.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-code-stub-assembler.cc [promise] Reduce size of PromiseCapability by making it a struct 2017-08-31 04:20:16 +00:00
test-code-stubs-arm64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-code-stubs-arm.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-code-stubs-ia32.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-code-stubs-mips64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-code-stubs-mips.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-code-stubs-x64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-code-stubs.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-code-stubs.h [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-compiler.cc [Modules] Introduce ScriptOrModule and HostDefinedOptions 2017-08-31 00:28:56 +00:00
test-constantpool.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-conversions.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-cpu-profiler.cc Delegate getting current wall-clock time to the Platform interface. 2017-08-30 06:28:09 +00:00
test-date.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-debug.cc [builtins] Remove most Builtins::Name usages in API 2017-09-05 13:13:49 +00:00
test-decls.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-deoptimization.cc Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
test-dictionary.cc [runtime] Make GetHash and GetOrCreateHash member functions 2017-08-22 00:35:31 +00:00
test-disasm-arm64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-arm.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-ia32.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-mips64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-mips.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-ppc.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-s390.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-x64.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-diy-fp.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-double.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-dtoa.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-elements-kind.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-experimental-extra.js Add experimental, non-snapshotted V8 extras 2015-08-20 00:01:14 +00:00
test-extra.js Add isPromise V8 extras util 2017-04-06 13:16:35 +00:00
test-fast-dtoa.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-feedback-vector.cc [turbofan] Optimize fast enum cache driven for..in. 2017-09-01 11:27:37 +00:00
test-feedback-vector.h [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
test-field-type-tracking.cc Cache fewer StoreIC-Transition handlers 2017-08-18 16:06:44 +00:00
test-fixed-dtoa.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-flags.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-func-name-inference.cc [iwyu] Remove include debug.h -> arguments.h 2017-02-09 09:19:23 +00:00
test-fuzz-arm64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-global-handles.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-global-object.cc Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
test-hashcode.cc [runtime] Make GetHash and GetOrCreateHash member functions 2017-08-22 00:35:31 +00:00
test-hashmap.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-heap-profiler.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +00:00
test-identity-map.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +00:00
test-inobject-slack-tracking.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-intl.cc [intl] Implement Intl.NumberFormat.prototype.formatToParts 2017-06-30 20:14:18 +00:00
test-javascript-arm64.cc include fixing: api.h shouldn't include objects-inl.h 2017-01-09 13:43:28 +00:00
test-js-arm64-variables.cc include fixing: api.h shouldn't include objects-inl.h 2017-01-09 13:43:28 +00:00
test-list.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-liveedit.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-lockers.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +00:00
test-log-stack-tracer.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-log.cc Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
test-macro-assembler-arm.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-macro-assembler-mips64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-macro-assembler-mips.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-macro-assembler-x64.cc [fullcodegen] Delete FullCodegen. 2017-08-11 11:50:05 +00:00
test-managed.cc Refactor Managed construction 2017-09-04 11:37:42 +00:00
test-mementos.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-modules.cc [api] Expose a module's status and exception. 2017-06-28 15:54:57 +00:00
test-object.cc [cctest] Add simple test for EnumCache 2017-08-31 09:53:24 +00:00
test-orderedhashtable.cc Reland "[runtime] Store hash code in length field" 2017-08-21 05:30:01 +00:00
test-parsing.cc Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
test-platform-linux.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-platform-win32.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-platform.cc S390:Update inline asm constraint in test-platform 2016-07-16 15:36:45 +00:00
test-profile-generator.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +00:00
test-random-number-generator.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-regexp.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-representation.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-run-wasm-relocation-arm64.cc [wasm] Remove 'using namespace' from cctest/wasm 2017-09-01 13:49:24 +00:00
test-run-wasm-relocation-arm.cc [wasm] Remove 'using namespace' from cctest/wasm 2017-09-01 13:49:24 +00:00
test-run-wasm-relocation-ia32.cc [wasm] Remove 'using namespace' from cctest/wasm 2017-09-01 13:49:24 +00:00
test-run-wasm-relocation-x64.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-sampler-api.cc Include only stuff you need, part 6: Fix cctest.h. 2016-09-01 12:02:16 +00:00
test-serialize.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-simulator-arm64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-simulator-arm.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-strings.cc [presubmit] Enable and fix "build/namespaces" linter check. 2017-09-04 11:24:26 +00:00
test-strtod.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-symbols.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-thread-termination.cc [console] correctly propagate exceptions. 2017-08-31 13:37:12 +00:00
test-threads.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +00:00
test-trace-event.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +00:00
test-traced-value.cc [tracing] Use locale independent writer for FP values. 2017-01-12 08:08:57 +00:00
test-transitions.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-transitions.h Refactor TransitionArray access 2017-07-28 19:41:21 +00:00
test-typedarrays.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-types.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-unbound-queue.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-unboxed-doubles.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-unscopables-hidden-prototype.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-usecounters.cc [parsing] Add a UseCounter for labeled expression statements 2017-08-04 18:51:54 +00:00
test-utils-arm64.cc [assembler] Make Register et al. real classes 2017-09-06 12:13:09 +00:00
test-utils-arm64.h [assembler] Make Register et al. real classes 2017-09-06 12:13:09 +00:00
test-utils.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-version.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-weakmaps.cc [runtime] Make GetHash and GetOrCreateHash member functions 2017-08-22 00:35:31 +00:00
test-weaksets.cc [runtime] Make GetHash and GetOrCreateHash member functions 2017-08-22 00:35:31 +00:00
testcfg.py [test] Fix deterministic test shards. 2016-03-31 07:38:22 +00:00
trace-extension.cc Expose TickSample and its APIs in v8-profiler.h 2016-07-06 18:40:31 +00:00
trace-extension.h Expose TickSample and its APIs in v8-profiler.h 2016-07-06 18:40:31 +00:00
types-fuzz.h [turbofan] HeapConstant types should compare by handle address 2016-10-08 16:51:53 +00:00
unicode-helpers.h [parser/test] Move cctest/PreParserScopeAnalysis into a new file. 2017-02-07 10:11:01 +00:00