| Index: src/a64/assembler-a64.h
|
| diff --git a/src/a64/assembler-a64.h b/src/a64/assembler-a64.h
|
| index 0ad7ce1c97da02cdc1e2e397d2b7cd74bf78504a..1ac773de31f32e7dcd19e6a27cafdd20f7e79b04 100644
|
| --- a/src/a64/assembler-a64.h
|
| +++ b/src/a64/assembler-a64.h
|
| @@ -570,23 +570,6 @@ class Operand {
|
| // TODO(all): If necessary, study more in details which methods
|
| // TODO(all): should be inlined or not.
|
| public:
|
| - // #<immediate>
|
| - // where <immediate> is int64_t.
|
| - // GCC complains about ambiguous aliasing if we don't explicitly declare the
|
| - // variants.
|
| - // The simple literal-value wrappers are allowed to be implicit constructors
|
| - // because Operand is a wrapper class that doesn't normally perform any type
|
| - // conversion.
|
| - inline Operand(int64_t immediate,
|
| - RelocInfo::Mode rmode = RelocInfo::NONE64); // NOLINT(runtime/explicit)
|
| - inline Operand(uint64_t immediate,
|
| - RelocInfo::Mode rmode = RelocInfo::NONE64); // NOLINT(runtime/explicit)
|
| - inline Operand(int32_t immediate,
|
| - RelocInfo::Mode rmode = RelocInfo::NONE32); // NOLINT(runtime/explicit)
|
| - inline Operand(uint32_t immediate,
|
| - RelocInfo::Mode rmode = RelocInfo::NONE32); // NOLINT(runtime/explicit)
|
| -
|
| -
|
| // rm, {<shift> {#<shift_amount>}}
|
| // where <shift> is one of {LSL, LSR, ASR, ROR}.
|
| // <shift_amount> is uint6_t.
|
| @@ -603,9 +586,16 @@ class Operand {
|
| Extend extend,
|
| unsigned shift_amount = 0);
|
|
|
| - inline explicit Operand(Smi* value);
|
| - explicit Operand(const ExternalReference& f);
|
| - explicit Operand(Handle<Object> handle);
|
| + template<typename T>
|
| + inline explicit Operand(Handle<T> handle);
|
| +
|
| + // Implicit constructor for all int types, ExternalReference, and Smi.
|
| + template<typename T>
|
| + inline Operand(T t); // NOLINT(runtime/explicit)
|
| +
|
| + // Implicit constructor for int types.
|
| + template<typename int_t>
|
| + inline Operand(int_t t, RelocInfo::Mode rmode);
|
|
|
| inline bool IsImmediate() const;
|
| inline bool IsShiftedRegister() const;
|
| @@ -632,6 +622,7 @@ class Operand {
|
| inline static Operand UntagSmiAndScale(Register smi, int scale);
|
|
|
| private:
|
| + void initialize_handle(Handle<Object> value);
|
| int64_t immediate_;
|
| Register reg_;
|
| Shift shift_;
|
|
|