diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2011-07-05 14:40:13 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2011-07-05 14:51:29 -0700 |
commit | 149562555c9bf56457dee9a1ad70c53ed670a776 (patch) | |
tree | f6217cf3c54ddbee03f37247a3c7c75203f868fd /deps/v8/src/code-stubs.cc | |
parent | f08720606757577d95bd09b48697c7decbf17f00 (diff) | |
download | node-149562555c9bf56457dee9a1ad70c53ed670a776.tar.gz |
Downgrade V8 to 3.1.8.25
There are serious performance regressions both in V8 and our own legacy
networking stack. Until we correct our own problems we are going back to the
old V8.
Diffstat (limited to 'deps/v8/src/code-stubs.cc')
-rw-r--r-- | deps/v8/src/code-stubs.cc | 73 |
1 files changed, 18 insertions, 55 deletions
diff --git a/deps/v8/src/code-stubs.cc b/deps/v8/src/code-stubs.cc index db57280f4..ba77b21c6 100644 --- a/deps/v8/src/code-stubs.cc +++ b/deps/v8/src/code-stubs.cc @@ -1,4 +1,4 @@ -// Copyright 2011 the V8 project authors. All rights reserved. +// Copyright 2006-2008 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -29,7 +29,6 @@ #include "bootstrapper.h" #include "code-stubs.h" -#include "stub-cache.h" #include "factory.h" #include "gdb-jit.h" #include "macro-assembler.h" @@ -38,10 +37,9 @@ namespace v8 { namespace internal { bool CodeStub::FindCodeInCache(Code** code_out) { - Heap* heap = Isolate::Current()->heap(); - int index = heap->code_stubs()->FindEntry(GetKey()); + int index = Heap::code_stubs()->FindEntry(GetKey()); if (index != NumberDictionary::kNotFound) { - *code_out = Code::cast(heap->code_stubs()->ValueAt(index)); + *code_out = Code::cast(Heap::code_stubs()->ValueAt(index)); return true; } return false; @@ -50,7 +48,7 @@ bool CodeStub::FindCodeInCache(Code** code_out) { void CodeStub::GenerateCode(MacroAssembler* masm) { // Update the static counter each time a new code stub is generated. - masm->isolate()->counters()->code_stubs()->Increment(); + Counters::code_stubs.Increment(); // Nested stubs are not allowed for leafs. AllowStubCallsScope allow_scope(masm, AllowsStubCalls()); @@ -64,11 +62,9 @@ void CodeStub::GenerateCode(MacroAssembler* masm) { void CodeStub::RecordCodeGeneration(Code* code, MacroAssembler* masm) { code->set_major_key(MajorKey()); - Isolate* isolate = masm->isolate(); - PROFILE(isolate, CodeCreateEvent(Logger::STUB_TAG, code, GetName())); + PROFILE(CodeCreateEvent(Logger::STUB_TAG, code, GetName())); GDBJIT(AddCode(GDBJITInterface::STUB, GetName(), code)); - Counters* counters = isolate->counters(); - counters->total_stubs_code_size()->Increment(code->instruction_size()); + Counters::total_stubs_code_size.Increment(code->instruction_size()); #ifdef ENABLE_DISASSEMBLER if (FLAG_print_code_stubs) { @@ -88,15 +84,12 @@ int CodeStub::GetCodeKind() { Handle<Code> CodeStub::GetCode() { - Isolate* isolate = Isolate::Current(); - Factory* factory = isolate->factory(); - Heap* heap = isolate->heap(); Code* code; if (!FindCodeInCache(&code)) { - HandleScope scope(isolate); + v8::HandleScope scope; // Generate the new code. - MacroAssembler masm(isolate, NULL, 256); + MacroAssembler masm(NULL, 256); GenerateCode(&masm); // Create the code object. @@ -108,24 +101,22 @@ Handle<Code> CodeStub::GetCode() { static_cast<Code::Kind>(GetCodeKind()), InLoop(), GetICState()); - Handle<Code> new_object = factory->NewCode( - desc, flags, masm.CodeObject(), NeedsImmovableCode()); + Handle<Code> new_object = Factory::NewCode(desc, flags, masm.CodeObject()); RecordCodeGeneration(*new_object, &masm); FinishCode(*new_object); // Update the dictionary and the root in Heap. Handle<NumberDictionary> dict = - factory->DictionaryAtNumberPut( - Handle<NumberDictionary>(heap->code_stubs()), + Factory::DictionaryAtNumberPut( + Handle<NumberDictionary>(Heap::code_stubs()), GetKey(), new_object); - heap->public_set_code_stubs(*dict); + Heap::public_set_code_stubs(*dict); code = *new_object; } - ASSERT(!NeedsImmovableCode() || heap->lo_space()->Contains(code)); - return Handle<Code>(code, isolate); + return Handle<Code>(code); } @@ -133,9 +124,8 @@ MaybeObject* CodeStub::TryGetCode() { Code* code; if (!FindCodeInCache(&code)) { // Generate the new code. - MacroAssembler masm(Isolate::Current(), NULL, 256); + MacroAssembler masm(NULL, 256); GenerateCode(&masm); - Heap* heap = masm.isolate()->heap(); // Create the code object. CodeDesc desc; @@ -148,7 +138,7 @@ MaybeObject* CodeStub::TryGetCode() { GetICState()); Object* new_object; { MaybeObject* maybe_new_object = - heap->CreateCode(desc, flags, masm.CodeObject()); + Heap::CreateCode(desc, flags, masm.CodeObject()); if (!maybe_new_object->ToObject(&new_object)) return maybe_new_object; } code = Code::cast(new_object); @@ -157,9 +147,9 @@ MaybeObject* CodeStub::TryGetCode() { // Try to update the code cache but do not fail if unable. MaybeObject* maybe_new_object = - heap->code_stubs()->AtNumberPut(GetKey(), code); + Heap::code_stubs()->AtNumberPut(GetKey(), code); if (maybe_new_object->ToObject(&new_object)) { - heap->public_set_code_stubs(NumberDictionary::cast(new_object)); + Heap::public_set_code_stubs(NumberDictionary::cast(new_object)); } } @@ -198,12 +188,6 @@ void ICCompareStub::Generate(MacroAssembler* masm) { case CompareIC::HEAP_NUMBERS: GenerateHeapNumbers(masm); break; - case CompareIC::STRINGS: - GenerateStrings(masm); - break; - case CompareIC::SYMBOLS: - GenerateSymbols(masm); - break; case CompareIC::OBJECTS: GenerateObjects(masm); break; @@ -216,8 +200,7 @@ void ICCompareStub::Generate(MacroAssembler* masm) { const char* InstanceofStub::GetName() { if (name_ != NULL) return name_; const int kMaxNameLength = 100; - name_ = Isolate::Current()->bootstrapper()->AllocateAutoDeletedArray( - kMaxNameLength); + name_ = Bootstrapper::AllocateAutoDeletedArray(kMaxNameLength); if (name_ == NULL) return "OOM"; const char* args = ""; @@ -244,24 +227,4 @@ const char* InstanceofStub::GetName() { } -void KeyedLoadFastElementStub::Generate(MacroAssembler* masm) { - KeyedLoadStubCompiler::GenerateLoadFastElement(masm); -} - - -void KeyedStoreFastElementStub::Generate(MacroAssembler* masm) { - KeyedStoreStubCompiler::GenerateStoreFastElement(masm, is_js_array_); -} - - -void KeyedLoadExternalArrayStub::Generate(MacroAssembler* masm) { - KeyedLoadStubCompiler::GenerateLoadExternalArray(masm, elements_kind_); -} - - -void KeyedStoreExternalArrayStub::Generate(MacroAssembler* masm) { - KeyedStoreStubCompiler::GenerateStoreExternalArray(masm, elements_kind_); -} - - } } // namespace v8::internal |