| Index: src/ia32/code-stubs-ia32.h
|
| diff --git a/src/ia32/code-stubs-ia32.h b/src/ia32/code-stubs-ia32.h
|
| index 4eac9a9a304ff9e608bd1a7cfb27cfaf2ed5503a..351636faf776502f5203985745c8917857af195e 100644
|
| --- a/src/ia32/code-stubs-ia32.h
|
| +++ b/src/ia32/code-stubs-ia32.h
|
| @@ -272,24 +272,35 @@ class StringHelper : public AllStatic {
|
| // Flag that indicates how to generate code for the stub StringAddStub.
|
| enum StringAddFlags {
|
| NO_STRING_ADD_FLAGS = 0,
|
| - NO_STRING_CHECK_IN_STUB = 1 << 0 // Omit string check in stub.
|
| + // Omit left string check in stub (left is definitely a string).
|
| + NO_STRING_CHECK_LEFT_IN_STUB = 1 << 0,
|
| + // Omit right string check in stub (right is definitely a string).
|
| + NO_STRING_CHECK_RIGHT_IN_STUB = 1 << 1,
|
| + // Omit both string checks in stub.
|
| + NO_STRING_CHECK_IN_STUB =
|
| + NO_STRING_CHECK_LEFT_IN_STUB | NO_STRING_CHECK_RIGHT_IN_STUB
|
| };
|
|
|
|
|
| class StringAddStub: public CodeStub {
|
| public:
|
| - explicit StringAddStub(StringAddFlags flags) {
|
| - string_check_ = ((flags & NO_STRING_CHECK_IN_STUB) == 0);
|
| - }
|
| + explicit StringAddStub(StringAddFlags flags) : flags_(flags) {}
|
|
|
| private:
|
| Major MajorKey() { return StringAdd; }
|
| - int MinorKey() { return string_check_ ? 0 : 1; }
|
| + int MinorKey() { return flags_; }
|
|
|
| void Generate(MacroAssembler* masm);
|
|
|
| - // Should the stub check whether arguments are strings?
|
| - bool string_check_;
|
| + void GenerateConvertArgument(MacroAssembler* masm,
|
| + int stack_offset,
|
| + Register arg,
|
| + Register scratch1,
|
| + Register scratch2,
|
| + Register scratch3,
|
| + Label* slow);
|
| +
|
| + const StringAddFlags flags_;
|
| };
|
|
|
|
|
|
|