diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-02-03 09:06:03 -0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-02-03 09:07:02 -0800 |
commit | c7cb4daa25966e4f9af3c6d5499d762736454da9 (patch) | |
tree | 27c6541f5a1207eb74797ed63a43126c9bf2ba81 /deps/v8/src/codegen.cc | |
parent | c723acc72192334a62bea6ff4baa33aab0da50ad (diff) | |
download | node-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.cc | 43 |
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 |