summaryrefslogtreecommitdiff
path: root/deps/v8/src/codegen.cc
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2010-02-03 09:06:03 -0800
committerRyan Dahl <ry@tinyclouds.org>2010-02-03 09:07:02 -0800
commitc7cb4daa25966e4f9af3c6d5499d762736454da9 (patch)
tree27c6541f5a1207eb74797ed63a43126c9bf2ba81 /deps/v8/src/codegen.cc
parentc723acc72192334a62bea6ff4baa33aab0da50ad (diff)
downloadnode-new-c7cb4daa25966e4f9af3c6d5499d762736454da9.tar.gz
Upgrade V8 to 2.1.0
Diffstat (limited to 'deps/v8/src/codegen.cc')
-rw-r--r--deps/v8/src/codegen.cc43
1 files changed, 27 insertions, 16 deletions
diff --git a/deps/v8/src/codegen.cc b/deps/v8/src/codegen.cc
index fd7e0e80b7..cb6089b8b7 100644
--- a/deps/v8/src/codegen.cc
+++ b/deps/v8/src/codegen.cc
@@ -216,13 +216,19 @@ Handle<Code> CodeGenerator::MakeCodeEpilogue(FunctionLiteral* fun,
// the compiler.cc code.
Handle<Code> CodeGenerator::MakeCode(FunctionLiteral* fun,
Handle<Script> script,
- bool is_eval) {
+ bool is_eval,
+ CompilationInfo* info) {
+ if (!script->IsUndefined() && !script->source()->IsUndefined()) {
+ int len = String::cast(script->source())->length();
+ Counters::total_old_codegen_source_size.Increment(len);
+ }
MakeCodePrologue(fun);
// Generate code.
const int kInitialBufferSize = 4 * KB;
- CodeGenerator cgen(kInitialBufferSize, script, is_eval);
+ MacroAssembler masm(NULL, kInitialBufferSize);
+ CodeGenerator cgen(&masm, script, is_eval);
CodeGeneratorScope scope(&cgen);
- cgen.GenCode(fun);
+ cgen.Generate(fun, PRIMARY, info);
if (cgen.HasStackOverflow()) {
ASSERT(!Top::has_pending_exception());
return Handle<Code>::null();
@@ -344,6 +350,7 @@ CodeGenerator::InlineRuntimeLUT CodeGenerator::kInlineRuntimeLUT[] = {
{&CodeGenerator::GenerateRandomPositiveSmi, "_RandomPositiveSmi"},
{&CodeGenerator::GenerateIsObject, "_IsObject"},
{&CodeGenerator::GenerateIsFunction, "_IsFunction"},
+ {&CodeGenerator::GenerateIsUndetectableObject, "_IsUndetectableObject"},
{&CodeGenerator::GenerateStringAdd, "_StringAdd"},
{&CodeGenerator::GenerateSubString, "_SubString"},
{&CodeGenerator::GenerateStringCompare, "_StringCompare"},
@@ -446,11 +453,6 @@ void CodeGenerator::CodeForSourcePosition(int pos) {
}
-const char* RuntimeStub::GetName() {
- return Runtime::FunctionForId(id_)->stub_name;
-}
-
-
const char* GenericUnaryOpStub::GetName() {
switch (op_) {
case Token::SUB:
@@ -468,14 +470,6 @@ const char* GenericUnaryOpStub::GetName() {
}
-void RuntimeStub::Generate(MacroAssembler* masm) {
- Runtime::Function* f = Runtime::FunctionForId(id_);
- masm->TailCallRuntime(ExternalReference(f),
- num_arguments_,
- f->result_size);
-}
-
-
void ArgumentsAccessStub::Generate(MacroAssembler* masm) {
switch (type_) {
case READ_LENGTH: GenerateReadLength(masm); break;
@@ -485,6 +479,17 @@ void ArgumentsAccessStub::Generate(MacroAssembler* masm) {
}
+int CEntryStub::MinorKey() {
+ ASSERT(result_size_ <= 2);
+#ifdef _WIN64
+ return ExitFrameModeBits::encode(mode_)
+ | IndirectResultBits::encode(result_size_ > 1);
+#else
+ return ExitFrameModeBits::encode(mode_);
+#endif
+}
+
+
bool ApiGetterEntryStub::GetCustomCache(Code** code_out) {
Object* cache = info()->load_stub_cache();
if (cache->IsUndefined()) {
@@ -501,4 +506,10 @@ void ApiGetterEntryStub::SetCustomCache(Code* value) {
}
+void DebuggerStatementStub::Generate(MacroAssembler* masm) {
+ Runtime::Function* f = Runtime::FunctionForId(Runtime::kDebugBreak);
+ masm->TailCallRuntime(ExternalReference(f), 0, f->result_size);
+}
+
+
} } // namespace v8::internal