summaryrefslogtreecommitdiff
path: root/deps/v8/src/x64/codegen-x64.h
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2009-12-30 02:34:22 +0100
committerRyan Dahl <ry@tinyclouds.org>2009-12-30 02:35:15 +0100
commitfd73a3a3985b5d4064d3dbb1e5bda7eab259e9c7 (patch)
tree869a651a4d972e661c9c828b74348a55e24cc8c8 /deps/v8/src/x64/codegen-x64.h
parent359d0170ab2c9925b0408f358285c9a1d98547e6 (diff)
downloadnode-new-fd73a3a3985b5d4064d3dbb1e5bda7eab259e9c7.tar.gz
Upgrade V8 to 2.0.5.4
Diffstat (limited to 'deps/v8/src/x64/codegen-x64.h')
-rw-r--r--deps/v8/src/x64/codegen-x64.h38
1 files changed, 35 insertions, 3 deletions
diff --git a/deps/v8/src/x64/codegen-x64.h b/deps/v8/src/x64/codegen-x64.h
index 8539884aaf..fdace8d59d 100644
--- a/deps/v8/src/x64/codegen-x64.h
+++ b/deps/v8/src/x64/codegen-x64.h
@@ -436,7 +436,7 @@ class CodeGenerator: public AstVisitor {
void GenericBinaryOperation(
Token::Value op,
- SmiAnalysis* type,
+ StaticType* type,
OverwriteMode overwrite_mode);
// If possible, combine two constant smi values using op to produce
@@ -449,7 +449,7 @@ class CodeGenerator: public AstVisitor {
void ConstantSmiBinaryOperation(Token::Value op,
Result* operand,
Handle<Object> constant_operand,
- SmiAnalysis* type,
+ StaticType* type,
bool reversed,
OverwriteMode overwrite_mode);
@@ -670,7 +670,8 @@ class GenericBinaryOpStub: public CodeStub {
mode_(mode),
flags_(flags),
args_in_registers_(false),
- args_reversed_(false) {
+ args_reversed_(false),
+ name_(NULL) {
use_sse3_ = CpuFeatures::IsSupported(SSE3);
ASSERT(OpBits::is_valid(Token::NUM_TOKENS));
}
@@ -689,6 +690,7 @@ class GenericBinaryOpStub: public CodeStub {
bool args_in_registers_; // Arguments passed in registers not on the stack.
bool args_reversed_; // Left and right argument are swapped.
bool use_sse3_;
+ char* name_;
const char* GetName();
@@ -745,6 +747,36 @@ class GenericBinaryOpStub: public CodeStub {
};
+// 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.
+};
+
+
+class StringAddStub: public CodeStub {
+ public:
+ explicit StringAddStub(StringAddFlags flags) {
+ string_check_ = ((flags & NO_STRING_CHECK_IN_STUB) == 0);
+ }
+
+ private:
+ Major MajorKey() { return StringAdd; }
+ int MinorKey() { return string_check_ ? 0 : 1; }
+
+ void Generate(MacroAssembler* masm);
+
+ void GenerateCopyCharacters(MacroAssembler* masm,
+ Register desc,
+ Register src,
+ Register count,
+ bool ascii);
+
+ // Should the stub check whether arguments are strings?
+ bool string_check_;
+};
+
+
} } // namespace v8::internal
#endif // V8_X64_CODEGEN_X64_H_