Index: src/ia32/codegen-ia32.cc |
=================================================================== |
--- src/ia32/codegen-ia32.cc (revision 3439) |
+++ src/ia32/codegen-ia32.cc (working copy) |
@@ -763,19 +763,27 @@ |
const char* GenericBinaryOpStub::GetName() { |
- switch (op_) { |
- case Token::ADD: return "GenericBinaryOpStub_ADD"; |
- case Token::SUB: return "GenericBinaryOpStub_SUB"; |
- case Token::MUL: return "GenericBinaryOpStub_MUL"; |
- case Token::DIV: return "GenericBinaryOpStub_DIV"; |
- case Token::BIT_OR: return "GenericBinaryOpStub_BIT_OR"; |
- case Token::BIT_AND: return "GenericBinaryOpStub_BIT_AND"; |
- case Token::BIT_XOR: return "GenericBinaryOpStub_BIT_XOR"; |
- case Token::SAR: return "GenericBinaryOpStub_SAR"; |
- case Token::SHL: return "GenericBinaryOpStub_SHL"; |
- case Token::SHR: return "GenericBinaryOpStub_SHR"; |
- default: return "GenericBinaryOpStub"; |
+ if (name_ != NULL) return name_; |
+ const int len = 100; |
+ name_ = Bootstrapper::AllocateAutoDeletedArray(len); |
+ if (name_ == NULL) return "OOM"; |
+ const char* op_name = Token::Name(op_); |
+ const char* overwrite_name; |
+ switch (mode_) { |
+ case NO_OVERWRITE: overwrite_name = "Alloc"; break; |
+ case OVERWRITE_RIGHT: overwrite_name = "OverwriteRight"; break; |
+ case OVERWRITE_LEFT: overwrite_name = "OverwriteLeft"; break; |
+ default: overwrite_name = "UnknownOverwrite"; break; |
} |
+ |
+ OS::SNPrintF(Vector<char>(name_, len), |
+ "GenericBinaryOpStub_%s_%s%s_%s%s", |
+ op_name, |
+ overwrite_name, |
+ (flags_ & NO_SMI_CODE_IN_STUB) ? "_NoSmiInStub" : "", |
+ args_in_registers_ ? "RegArgs" : "StackArgs", |
+ args_reversed_ ? "_R" : ""); |
+ return name_; |
} |