Revision: 17029
Author: [email protected]
Date: Tue Oct 1 08:21:50 2013 UTC
Log: Version 3.22.5
Disabled externalization of sliced/cons strings in old pointer space
(Chromium issue 276357).
Turned on handle zapping for release builds
Performance and stability improvements on all platforms.
http://code.google.com/p/v8/source/detail?r=17029
Deleted:
/trunk/src/marking-thread.cc
/trunk/src/marking-thread.h
Modified:
/trunk/ChangeLog
/trunk/build/features.gypi
/trunk/include/v8.h
/trunk/src/api.cc
/trunk/src/arm/ic-arm.cc
/trunk/src/arm/lithium-codegen-arm.cc
/trunk/src/builtins.cc
/trunk/src/builtins.h
/trunk/src/code-stubs.h
/trunk/src/d8-debug.cc
/trunk/src/debug.h
/trunk/src/disassembler.cc
/trunk/src/flag-definitions.h
/trunk/src/hydrogen.cc
/trunk/src/ia32/ic-ia32.cc
/trunk/src/ic.cc
/trunk/src/isolate.cc
/trunk/src/isolate.h
/trunk/src/log.cc
/trunk/src/log.h
/trunk/src/mark-compact.cc
/trunk/src/mark-compact.h
/trunk/src/mips/ic-mips.cc
/trunk/src/objects-inl.h
/trunk/src/objects.cc
/trunk/src/objects.h
/trunk/src/stub-cache.cc
/trunk/src/type-info.cc
/trunk/src/v8.cc
/trunk/src/version.cc
/trunk/src/x64/ic-x64.cc
/trunk/tools/gyp/v8.gyp
=======================================
--- /trunk/src/marking-thread.cc Tue Sep 3 11:25:39 2013 UTC
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2013 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:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include "marking-thread.h"
-
-#include "v8.h"
-
-#include "isolate.h"
-#include "v8threads.h"
-
-namespace v8 {
-namespace internal {
-
-MarkingThread::MarkingThread(Isolate* isolate)
- : Thread("MarkingThread"),
- isolate_(isolate),
- heap_(isolate->heap()),
- start_marking_semaphore_(0),
- end_marking_semaphore_(0),
- stop_semaphore_(0) {
- NoBarrier_Store(&stop_thread_, static_cast<AtomicWord>(false));
- id_ = NoBarrier_AtomicIncrement(&id_counter_, 1);
-}
-
-
-Atomic32 MarkingThread::id_counter_ = -1;
-
-
-void MarkingThread::Run() {
- Isolate::SetIsolateThreadLocals(isolate_, NULL);
- DisallowHeapAllocation no_allocation;
- DisallowHandleAllocation no_handles;
- DisallowHandleDereference no_deref;
-
- while (true) {
- start_marking_semaphore_.Wait();
-
- if (Acquire_Load(&stop_thread_)) {
- stop_semaphore_.Signal();
- return;
- }
-
- end_marking_semaphore_.Signal();
- }
-}
-
-
-void MarkingThread::Stop() {
- Release_Store(&stop_thread_, static_cast<AtomicWord>(true));
- start_marking_semaphore_.Signal();
- stop_semaphore_.Wait();
- Join();
-}
-
-
-void MarkingThread::StartMarking() {
- start_marking_semaphore_.Signal();
-}
-
-
-void MarkingThread::WaitForMarkingThread() {
- end_marking_semaphore_.Wait();
-}
-
-} } // namespace v8::internal
=======================================
--- /trunk/src/marking-thread.h Tue Sep 3 11:25:39 2013 UTC
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2013 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:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef V8_MARKING_THREAD_H_
-#define V8_MARKING_THREAD_H_
-
-#include "atomicops.h"
-#include "flags.h"
-#include "platform.h"
-#include "v8utils.h"
-
-#include "spaces.h"
-
-#include "heap.h"
-
-namespace v8 {
-namespace internal {
-
-class MarkingThread : public Thread {
- public:
- explicit MarkingThread(Isolate* isolate);
- ~MarkingThread() {}
-
- void Run();
- void Stop();
- void StartMarking();
- void WaitForMarkingThread();
-
- private:
- Isolate* isolate_;
- Heap* heap_;
- Semaphore start_marking_semaphore_;
- Semaphore end_marking_semaphore_;
- Semaphore stop_semaphore_;
- volatile AtomicWord stop_thread_;
- int id_;
- static Atomic32 id_counter_;
-};
-
-} } // namespace v8::internal
-
-#endif // V8_MARKING_THREAD_H_
=======================================
--- /trunk/ChangeLog Mon Sep 30 13:42:25 2013 UTC
+++ /trunk/ChangeLog Tue Oct 1 08:21:50 2013 UTC
@@ -1,3 +1,13 @@
+2013-10-01: Version 3.22.5
+
+ Disabled externalization of sliced/cons strings in old pointer
space
+ (Chromium issue 276357).
+
+ Turned on handle zapping for release builds
+
+ Performance and stability improvements on all platforms.
+
+
2013-09-30: Version 3.22.4
Function::Call and Object::CallAsFunction APIs should allow
v8::Value as
=======================================
--- /trunk/build/features.gypi Mon Sep 30 13:42:25 2013 UTC
+++ /trunk/build/features.gypi Tue Oct 1 08:21:50 2013 UTC
@@ -109,7 +109,7 @@
'Release': {
'variables': {
'v8_enable_extra_checks%': 0,
- 'v8_enable_handle_zapping%': 0,
+ 'v8_enable_handle_zapping%': 1,
},
'conditions': [
['v8_enable_extra_checks==1', {
=======================================
--- /trunk/include/v8.h Mon Sep 30 13:42:25 2013 UTC
+++ /trunk/include/v8.h Tue Oct 1 08:21:50 2013 UTC
@@ -584,8 +584,9 @@
*/
template <class S, class M2>
V8_INLINE void Reset(Isolate* isolate, const Persistent<S, M2>& other);
- // TODO(dcarney): deprecate
- V8_INLINE void Dispose() { Reset(); }
+
+ V8_DEPRECATED("Use Reset instead",
+ V8_INLINE void Dispose()) { Reset(); }
V8_INLINE bool IsEmpty() const { return val_ == 0; }
@@ -641,17 +642,19 @@
P* parameter,
typename WeakCallbackData<S, P>::Callback callback);
- // TODO(dcarney): deprecate
template<typename S, typename P>
- V8_INLINE void MakeWeak(
- P* parameter,
- typename WeakReferenceCallbacks<S, P>::Revivable callback);
+ V8_DEPRECATED(
+ "Use SetWeak instead",
+ V8_INLINE void MakeWeak(
+ P* parameter,
+ typename WeakReferenceCallbacks<S, P>::Revivable callback));
- // TODO(dcarney): deprecate
template<typename P>
- V8_INLINE void MakeWeak(
- P* parameter,
- typename WeakReferenceCallbacks<T, P>::Revivable callback);
+ V8_DEPRECATED(
+ "Use SetWeak instead",
+ V8_INLINE void MakeWeak(
+ P* parameter,
+ typename WeakReferenceCallbacks<T, P>::Revivable callback));
V8_INLINE void ClearWeak();
@@ -693,11 +696,11 @@
*/
V8_INLINE uint16_t WrapperClassId() const;
- // TODO(dcarney): remove
- V8_INLINE T* ClearAndLeak();
+ V8_DEPRECATED("This will be removed",
+ V8_INLINE T* ClearAndLeak());
- // TODO(dcarney): remove
- V8_INLINE void Clear() { val_ = 0; }
+ V8_DEPRECATED("This will be removed",
+ V8_INLINE void Clear()) { val_ = 0; }
// TODO(dcarney): remove
#ifndef V8_ALLOW_ACCESS_TO_RAW_HANDLE_CONSTRUCTOR
@@ -742,8 +745,9 @@
~HandleScope();
- // TODO(dcarney): deprecated - use EscapableHandleScope::Escape.
- template <class T> Local<T> Close(Handle<T> value);
+ template <class T>
+ V8_DEPRECATED("Use EscapableHandleScope::Escape instead",
+ Local<T> Close(Handle<T> value));
/**
* Counts the number of allocated handles.
@@ -1033,9 +1037,8 @@
/**
* Returns the script id value.
- * DEPRECATED: Please use GetId().
*/
- Local<Value> Id();
+ V8_DEPRECATED("Use GetId instead", Local<Value> Id());
/**
* Returns the script id.
@@ -1821,15 +1824,17 @@
*/
bool CanMakeExternal();
- // TODO(dcarney): deprecate
/** Creates an undetectable string from the supplied ASCII or UTF-8
data.*/
- V8_INLINE static Local<String> NewUndetectable(const char* data,
- int length = -1);
+ V8_DEPRECATED(
+ "Use NewFromUtf8 instead",
+ V8_INLINE static Local<String> NewUndetectable(const char* data,
+ int length = -1));
- // TODO(dcarney): deprecate
/** Creates an undetectable string from the supplied 16-bit character
codes.*/
- V8_INLINE static Local<String> NewUndetectable(const uint16_t* data,
- int length = -1);
+ V8_DEPRECATED(
+ "Use NewFromTwoByte instead",
+ V8_INLINE static Local<String> NewUndetectable(const uint16_t* data,
+ int length = -1));
/**
* Converts an object to a UTF-8-encoded character array. Useful if
@@ -1863,8 +1868,8 @@
*/
class V8_EXPORT AsciiValue {
public:
- // TODO(dcarney): deprecate
- explicit AsciiValue(Handle<v8::Value> obj);
+ V8_DEPRECATED("Use Utf8Value instead",
+ explicit AsciiValue(Handle<v8::Value> obj));
~AsciiValue();
char* operator*() { return str_; }
const char* operator*() const { return str_; }
@@ -2483,9 +2488,8 @@
/**
* Returns scriptId object.
- * DEPRECATED: use ScriptId() instead.
*/
- Handle<Value> GetScriptId() const;
+ V8_DEPRECATED("Use ScriptId instead", Handle<Value> GetScriptId()) const;
/**
* Returns scriptId.
@@ -2847,9 +2851,9 @@
public:
static Local<Value> New(double time);
- // Deprecated, use Date::ValueOf() instead.
- // TODO(svenpanne) Actually deprecate when Chrome is adapted.
- double NumberValue() const { return ValueOf(); }
+ V8_DEPRECATED(
+ "Use ValueOf instead",
+ double NumberValue()) const { return ValueOf(); }
/**
* A specialization of Value::NumberValue that is more efficient
@@ -2885,9 +2889,9 @@
public:
static Local<Value> New(double value);
- // Deprecated, use NumberObject::ValueOf() instead.
- // TODO(svenpanne) Actually deprecate when Chrome is adapted.
- double NumberValue() const { return ValueOf(); }
+ V8_DEPRECATED(
+ "Use ValueOf instead",
+ double NumberValue()) const { return ValueOf(); }
/**
* Returns the Number held by the object.
@@ -2908,9 +2912,9 @@
public:
static Local<Value> New(bool value);
- // Deprecated, use BooleanObject::ValueOf() instead.
- // TODO(svenpanne) Actually deprecate when Chrome is adapted.
- bool BooleanValue() const { return ValueOf(); }
+ V8_DEPRECATED(
+ "Use ValueOf instead",
+ bool BooleanValue()) const { return ValueOf(); }
/**
* Returns the Boolean held by the object.
@@ -2931,9 +2935,9 @@
public:
static Local<Value> New(Handle<String> value);
- // Deprecated, use StringObject::ValueOf() instead.
- // TODO(svenpanne) Actually deprecate when Chrome is adapted.
- Local<String> StringValue() const { return ValueOf(); }
+ V8_DEPRECATED(
+ "Use ValueOf instead",
+ Local<String> StringValue()) const { return ValueOf(); }
/**
* Returns the String held by the object.
@@ -2956,9 +2960,9 @@
public:
static Local<Value> New(Isolate* isolate, Handle<Symbol> value);
- // Deprecated, use SymbolObject::ValueOf() instead.
- // TODO(svenpanne) Actually deprecate when Chrome is adapted.
- Local<Symbol> SymbolValue() const { return ValueOf(); }
+ V8_DEPRECATED(
+ "Use ValueOf instead",
+ Local<Symbol> SymbolValue()) const { return ValueOf(); }
/**
* Returns the Symbol held by the object.
@@ -3785,8 +3789,9 @@
typedef void (*MessageCallback)(Handle<Message> message, Handle<Value>
error);
-// TODO(dcarney): remove. Use Isolate::ThrowException instead.
-Handle<Value> V8_EXPORT ThrowException(Handle<Value> exception);
+V8_DEPRECATED(
+ "Use Isolate::ThrowException instead",
+ Handle<Value> V8_EXPORT ThrowException(Handle<Value> exception));
/**
* Create new error objects by calling the corresponding error object
@@ -4587,10 +4592,10 @@
static void SetJitCodeEventHandler(JitCodeEventOptions options,
JitCodeEventHandler event_handler);
- // TODO(svenpanne) Really deprecate me when Chrome is fixed.
- /** Deprecated. Use Isolate::AdjustAmountOfExternalAllocatedMemory
instead. */
- static intptr_t AdjustAmountOfExternalAllocatedMemory(
- intptr_t change_in_bytes);
+ V8_DEPRECATED(
+ "Use Isolate::AdjustAmountOfExternalAllocatedMemory instead",
+ static intptr_t AdjustAmountOfExternalAllocatedMemory(
+ intptr_t change_in_bytes));
/**
* Forcefully terminate the current thread of JavaScript execution
@@ -4980,9 +4985,8 @@
/** Returns true if the context has experienced an out of memory
situation. */
bool HasOutOfMemoryException();
- // TODO(dcarney) Remove this function.
- /** Deprecated. Use Isolate::InContext instead. */
- static bool InContext();
+ V8_DEPRECATED("Use Isolate::InContext instead",
+ static bool InContext());
/** Returns an isolate associated with a current context. */
v8::Isolate* GetIsolate();
@@ -5053,8 +5057,9 @@
explicit V8_INLINE Scope(Handle<Context> context) : context_(context) {
context_->Enter();
}
- // TODO(dcarney): deprecate
- V8_INLINE Scope(Isolate* isolate, Persistent<Context>& context) //
NOLINT
+ V8_DEPRECATED(
+ "Use Handle version instead",
+ V8_INLINE Scope(Isolate* isolate, Persistent<Context>& context))
// NOLINT
: context_(Handle<Context>::New(isolate, context)) {
context_->Enter();
}
=======================================
--- /trunk/src/api.cc Mon Sep 30 13:42:25 2013 UTC
+++ /trunk/src/api.cc Tue Oct 1 08:21:50 2013 UTC
@@ -5610,6 +5610,12 @@
if (!internal::FLAG_clever_optimizations) return false;
i::Handle<i::String> obj = Utils::OpenHandle(this);
i::Isolate* isolate = obj->GetIsolate();
+
+ // TODO(yangguo): Externalizing sliced/cons strings allocates.
+ // This rule can be removed when all code that can
+ // trigger an access check is handlified and therefore GC safe.
+ if (isolate->heap()->old_pointer_space()->Contains(*obj)) return false;
+
if (isolate->string_tracker()->IsFreshUnusedString(obj)) return false;
int size = obj->Size(); // Byte size of the original string.
if (size < i::ExternalString::kShortSize) return false;
=======================================
--- /trunk/src/arm/ic-arm.cc Wed Sep 25 08:19:55 2013 UTC
+++ /trunk/src/arm/ic-arm.cc Tue Oct 1 08:21:50 2013 UTC
@@ -656,7 +656,7 @@
// Probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, r0, r2, r3, r4, r5, r6);
@@ -1487,7 +1487,7 @@
// Get the receiver from the stack and probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, strict_mode,
+ Code::HANDLER, MONOMORPHIC, strict_mode,
Code::NORMAL, Code::STORE_IC);
masm->isolate()->stub_cache()->GenerateProbe(
=======================================
--- /trunk/src/arm/lithium-codegen-arm.cc Mon Sep 30 13:42:25 2013 UTC
+++ /trunk/src/arm/lithium-codegen-arm.cc Tue Oct 1 08:21:50 2013 UTC
@@ -766,6 +766,10 @@
__ Move(cp, ToRegister(context));
} else if (context->IsStackSlot()) {
__ ldr(cp, ToMemOperand(context));
+ } else if (context->IsConstantOperand()) {
+ HConstant* constant =
+ chunk_->LookupConstant(LConstantOperand::cast(context));
+ __ LoadObject(cp, Handle<Object>::cast(constant->handle(isolate())));
} else {
UNREACHABLE();
}
=======================================
--- /trunk/src/builtins.cc Mon Sep 23 14:09:36 2013 UTC
+++ /trunk/src/builtins.cc Tue Oct 1 08:21:50 2013 UTC
@@ -1655,8 +1655,19 @@
functions->extra_args =
NO_EXTRA_ARGUMENTS; \
++functions;
+#define DEF_FUNCTION_PTR_H(aname, kind,
extra) \
+ functions->generator =
FUNCTION_ADDR(Generate_##aname); \
+ functions->c_code =
NULL; \
+ functions->s_name =
#aname; \
+ functions->name =
k##aname; \
+ functions->flags =
Code::ComputeFlags( \
+ Code::HANDLER, MONOMORPHIC, extra, Code::NORMAL,
Code::kind); \
+ functions->extra_args =
NO_EXTRA_ARGUMENTS; \
+ ++functions;
+
BUILTIN_LIST_C(DEF_FUNCTION_PTR_C)
BUILTIN_LIST_A(DEF_FUNCTION_PTR_A)
+ BUILTIN_LIST_H(DEF_FUNCTION_PTR_H)
BUILTIN_LIST_DEBUG_A(DEF_FUNCTION_PTR_A)
#undef DEF_FUNCTION_PTR_C
@@ -1781,8 +1792,15 @@
reinterpret_cast<Code**>(builtin_address(k##name)); \
return Handle<Code>(code_address); \
}
+#define DEFINE_BUILTIN_ACCESSOR_H(name, kind, extra) \
+Handle<Code> Builtins::name() { \
+ Code** code_address = \
+ reinterpret_cast<Code**>(builtin_address(k##name)); \
+ return Handle<Code>(code_address); \
+}
BUILTIN_LIST_C(DEFINE_BUILTIN_ACCESSOR_C)
BUILTIN_LIST_A(DEFINE_BUILTIN_ACCESSOR_A)
+BUILTIN_LIST_H(DEFINE_BUILTIN_ACCESSOR_H)
BUILTIN_LIST_DEBUG_A(DEFINE_BUILTIN_ACCESSOR_A)
#undef DEFINE_BUILTIN_ACCESSOR_C
#undef DEFINE_BUILTIN_ACCESSOR_A
=======================================
--- /trunk/src/builtins.h Thu Sep 26 07:36:30 2013 UTC
+++ /trunk/src/builtins.h Tue Oct 1 08:21:50 2013 UTC
@@ -115,8 +115,6 @@
Code::kNoExtraICState) \
V(KeyedLoadIC_MissForceGeneric, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \
- V(KeyedLoadIC_Slow, STUB, MONOMORPHIC, \
- Code::kNoExtraICState) \
V(StoreIC_Miss, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \
V(StoreIC_Slow, BUILTIN, UNINITIALIZED, \
@@ -131,14 +129,10 @@
Code::kNoExtraICState) \
V(LoadIC_PreMonomorphic, LOAD_IC, PREMONOMORPHIC, \
Code::kNoExtraICState) \
- V(LoadIC_Normal, LOAD_IC, MONOMORPHIC, \
- Code::kNoExtraICState) \
V(LoadIC_Megamorphic, LOAD_IC, MEGAMORPHIC, \
Code::kNoExtraICState) \
V(LoadIC_Getter_ForDeopt, LOAD_IC, MONOMORPHIC, \
Code::kNoExtraICState) \
- V(LoadIC_Slow, STUB, MONOMORPHIC, \
- Code::kNoExtraICState) \
\
V(KeyedLoadIC_Initialize, KEYED_LOAD_IC, UNINITIALIZED, \
Code::kNoExtraICState) \
@@ -157,8 +151,6 @@
Code::kNoExtraICState) \
V(StoreIC_PreMonomorphic, STORE_IC, PREMONOMORPHIC, \
Code::kNoExtraICState) \
- V(StoreIC_Normal, STORE_IC, MONOMORPHIC, \
- Code::kNoExtraICState) \
V(StoreIC_Megamorphic, STORE_IC, MEGAMORPHIC, \
Code::kNoExtraICState) \
V(StoreIC_Generic, STORE_IC, GENERIC, \
@@ -171,8 +163,6 @@
kStrictMode) \
V(StoreIC_PreMonomorphic_Strict, STORE_IC, PREMONOMORPHIC, \
kStrictMode) \
- V(StoreIC_Normal_Strict, STORE_IC, MONOMORPHIC, \
- kStrictMode) \
V(StoreIC_Megamorphic_Strict, STORE_IC, MEGAMORPHIC, \
kStrictMode) \
V(StoreIC_GlobalProxy_Strict, STORE_IC, GENERIC, \
@@ -220,6 +210,14 @@
Code::kNoExtraICState) \
CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, V)
+// Define list of builtin handlers implemented in assembly.
+#define BUILTIN_LIST_H(V) \
+ V(LoadIC_Slow, LOAD_IC, Code::kNoExtraICState) \
+ V(KeyedLoadIC_Slow, KEYED_LOAD_IC, Code::kNoExtraICState) \
+ V(LoadIC_Normal, LOAD_IC, Code::kNoExtraICState) \
+ V(StoreIC_Normal, STORE_IC, Code::kNoExtraICState) \
+ V(StoreIC_Normal_Strict, STORE_IC, kStrictMode)
+
#ifdef ENABLE_DEBUGGER_SUPPORT
// Define list of builtins used by the debugger implemented in assembly.
#define
BUILTIN_LIST_DEBUG_A(V) \
@@ -307,8 +305,10 @@
enum Name {
#define DEF_ENUM_C(name, ignore) k##name,
#define DEF_ENUM_A(name, kind, state, extra) k##name,
+#define DEF_ENUM_H(name, kind, extra) k##name,
BUILTIN_LIST_C(DEF_ENUM_C)
BUILTIN_LIST_A(DEF_ENUM_A)
+ BUILTIN_LIST_H(DEF_ENUM_H)
BUILTIN_LIST_DEBUG_A(DEF_ENUM_A)
#undef DEF_ENUM_C
#undef DEF_ENUM_A
@@ -332,8 +332,10 @@
#define DECLARE_BUILTIN_ACCESSOR_C(name, ignore) Handle<Code> name();
#define DECLARE_BUILTIN_ACCESSOR_A(name, kind, state, extra) \
Handle<Code> name();
+#define DECLARE_BUILTIN_ACCESSOR_H(name, kind, extra) Handle<Code> name();
BUILTIN_LIST_C(DECLARE_BUILTIN_ACCESSOR_C)
BUILTIN_LIST_A(DECLARE_BUILTIN_ACCESSOR_A)
+ BUILTIN_LIST_H(DECLARE_BUILTIN_ACCESSOR_H)
BUILTIN_LIST_DEBUG_A(DECLARE_BUILTIN_ACCESSOR_A)
#undef DECLARE_BUILTIN_ACCESSOR_C
#undef DECLARE_BUILTIN_ACCESSOR_A
=======================================
--- /trunk/src/code-stubs.h Wed Sep 25 08:19:55 2013 UTC
+++ /trunk/src/code-stubs.h Tue Oct 1 08:21:50 2013 UTC
@@ -904,7 +904,7 @@
class HandlerStub: public HICStub {
public:
- virtual Code::Kind GetCodeKind() const { return Code::STUB; }
+ virtual Code::Kind GetCodeKind() const { return Code::HANDLER; }
virtual int GetStubFlags() { return kind(); }
protected:
=======================================
--- /trunk/src/d8-debug.cc Wed Sep 4 13:57:32 2013 UTC
+++ /trunk/src/d8-debug.cc Tue Oct 1 08:21:50 2013 UTC
@@ -30,8 +30,6 @@
#include "d8.h"
#include "d8-debug.h"
#include "debug-agent.h"
-#include "platform.h"
-#include "platform/socket.h"
namespace v8 {
=======================================
--- /trunk/src/debug.h Wed Sep 11 08:25:48 2013 UTC
+++ /trunk/src/debug.h Tue Oct 1 08:21:50 2013 UTC
@@ -38,6 +38,7 @@
#include "frames-inl.h"
#include "hashmap.h"
#include "platform.h"
+#include "platform/socket.h"
#include "string-stream.h"
#include "v8threads.h"
=======================================
--- /trunk/src/disassembler.cc Wed Sep 11 08:25:48 2013 UTC
+++ /trunk/src/disassembler.cc Tue Oct 1 08:21:50 2013 UTC
@@ -250,7 +250,7 @@
if (kind == Code::CALL_IC || kind == Code::KEYED_CALL_IC) {
out.AddFormatted(", argc = %d", code->arguments_count());
}
- } else if (kind == Code::STUB) {
+ } else if (kind == Code::STUB || kind == Code::HANDLER) {
// Reverse lookup required as the minor key cannot be retrieved
// from the code object.
Object* obj = heap->code_stubs()->SlowReverseLookup(code);
=======================================
--- /trunk/src/flag-definitions.h Fri Sep 27 11:20:51 2013 UTC
+++ /trunk/src/flag-definitions.h Tue Oct 1 08:21:50 2013 UTC
@@ -530,8 +530,6 @@
DEFINE_bool(concurrent_sweeping, false, "enable concurrent sweeping")
DEFINE_int(sweeper_threads, 0,
"number of parallel and concurrent sweeping threads")
-DEFINE_bool(parallel_marking, false, "enable parallel marking")
-DEFINE_int(marking_threads, 0, "number of parallel marking threads")
#ifdef VERIFY_HEAP
DEFINE_bool(verify_heap, false, "verify heap pointers before and after GC")
#endif
=======================================
--- /trunk/src/hydrogen.cc Mon Sep 30 13:42:25 2013 UTC
+++ /trunk/src/hydrogen.cc Tue Oct 1 08:21:50 2013 UTC
@@ -6383,7 +6383,7 @@
return false;
}
-#if !V8_TARGET_ARCH_IA32
+#if !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM
// Target must be able to use caller's context.
CompilationInfo* outer_info = current_info();
if (target->context() != outer_info->closure()->context() ||
@@ -6532,8 +6532,8 @@
undefined,
function_state()->inlining_kind(),
undefined_receiver);
-#if V8_TARGET_ARCH_IA32
- // IA32 only, overwrite the caller's context in the deoptimization
+#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM
+ // IA32 and ARM only, overwrite the caller's context in the
deoptimization
// environment with the correct one.
//
// TODO(kmillikin): implement the same inlining on other platforms so we
=======================================
--- /trunk/src/ia32/ic-ia32.cc Thu Sep 12 09:02:59 2013 UTC
+++ /trunk/src/ia32/ic-ia32.cc Tue Oct 1 08:21:50 2013 UTC
@@ -1304,7 +1304,7 @@
// Probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, edx, ecx, ebx, eax);
@@ -1423,7 +1423,7 @@
// -----------------------------------
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, strict_mode,
+ Code::HANDLER, MONOMORPHIC, strict_mode,
Code::NORMAL, Code::STORE_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, edx, ecx, ebx, no_reg);
=======================================
--- /trunk/src/ic.cc Thu Sep 26 07:36:30 2013 UTC
+++ /trunk/src/ic.cc Tue Oct 1 08:21:50 2013 UTC
@@ -217,12 +217,9 @@
int index = map->IndexInCodeCache(name, target);
if (index >= 0) {
map->RemoveFromCodeCache(String::cast(name), target, index);
- // For loads and stores, handlers are stored in addition to the ICs on
the
- // map. Remove those, too.
- if ((target->is_load_stub() || target->is_keyed_load_stub() ||
- target->is_store_stub() || target->is_keyed_store_stub()) &&
- target->type() != Code::NORMAL) {
- Code* handler = target->FindFirstCode();
+ // Handlers are stored in addition to the ICs on the map. Remove
those, too.
+ Code* handler = target->FindFirstHandler();
+ if (handler != NULL) {
index = map->IndexInCodeCache(name, handler);
if (index >= 0) {
map->RemoveFromCodeCache(String::cast(name), handler, index);
@@ -999,11 +996,7 @@
Handle<String> name,
Handle<Code> code,
StrictModeFlag strict_mode) {
- if (code->type() == Code::NORMAL) return false;
- if (target()->ic_state() == MONOMORPHIC &&
- target()->type() == Code::NORMAL) {
- return false;
- }
+ if (code->kind() != Code::HANDLER) return false;
MapHandleList receiver_maps;
CodeHandleList handlers;
@@ -1038,7 +1031,10 @@
if (number_of_maps == 0 && target()->ic_state() != UNINITIALIZED) {
return false;
}
- target()->FindAllCode(&handlers, receiver_maps.length());
+
+ if (!target()->FindHandlers(&handlers, receiver_maps.length())) {
+ return false;
+ }
}
number_of_valid_maps++;
@@ -1126,7 +1122,7 @@
{
DisallowHeapAllocation no_gc;
target()->FindAllMaps(&receiver_maps);
- target()->FindAllCode(&handlers, receiver_maps.length());
+ if (!target()->FindHandlers(&handlers, receiver_maps.length())) return;
}
for (int i = 0; i < receiver_maps.length(); i++) {
UpdateMegamorphicCache(*receiver_maps.at(i), *name, *handlers.at(i));
@@ -1170,7 +1166,7 @@
bool is_same_handler = false;
{
DisallowHeapAllocation no_allocation;
- Code* old_handler = target()->FindFirstCode();
+ Code* old_handler = target()->FindFirstHandler();
is_same_handler = old_handler == *code;
}
if (is_same_handler
@@ -1182,9 +1178,7 @@
break;
}
- if (target()->type() != Code::NORMAL) {
- CopyICToMegamorphicCache(name);
- }
+ CopyICToMegamorphicCache(name);
}
UpdateMegamorphicCache(receiver->map(), *name, *code);
=======================================
--- /trunk/src/isolate.cc Mon Sep 30 13:42:25 2013 UTC
+++ /trunk/src/isolate.cc Tue Oct 1 08:21:50 2013 UTC
@@ -42,7 +42,6 @@
#include "isolate-inl.h"
#include "lithium-allocator.h"
#include "log.h"
-#include "marking-thread.h"
#include "messages.h"
#include "platform.h"
#include "regexp-stack.h"
@@ -147,8 +146,6 @@
return number_of_threads;
} else if (type == CONCURRENT_SWEEPING) {
return number_of_threads - 1;
- } else if (type == PARALLEL_MARKING) {
- return number_of_threads;
}
return 1;
}
@@ -1800,7 +1797,6 @@
function_entry_hook_(NULL),
deferred_handles_head_(NULL),
optimizing_compiler_thread_(NULL),
- marking_thread_(NULL),
sweeper_thread_(NULL),
stress_deopt_count_(0) {
id_ = NoBarrier_AtomicIncrement(&isolate_counter_, 1);
@@ -1906,14 +1902,6 @@
}
delete[] sweeper_thread_;
}
-
- if (FLAG_marking_threads > 0) {
- for (int i = 0; i < FLAG_marking_threads; i++) {
- marking_thread_[i]->Stop();
- delete marking_thread_[i];
- }
- delete[] marking_thread_;
- }
if (FLAG_hydrogen_stats) GetHStatistics()->Print();
@@ -2347,14 +2335,6 @@
InternalArrayConstructorStubBase::InstallDescriptors(this);
FastNewClosureStub::InstallDescriptors(this);
}
-
- if (FLAG_marking_threads > 0) {
- marking_thread_ = new MarkingThread*[FLAG_marking_threads];
- for (int i = 0; i < FLAG_marking_threads; i++) {
- marking_thread_[i] = new MarkingThread(this);
- marking_thread_[i]->Start();
- }
- }
if (FLAG_sweeper_threads > 0) {
sweeper_thread_ = new SweeperThread*[FLAG_sweeper_threads];
=======================================
--- /trunk/src/isolate.h Fri Sep 27 07:27:26 2013 UTC
+++ /trunk/src/isolate.h Tue Oct 1 08:21:50 2013 UTC
@@ -75,7 +75,6 @@
class InlineRuntimeFunctionsTable;
class NoAllocationStringAllocator;
class InnerPointerToCodeCache;
-class MarkingThread;
class PreallocatedMemoryThread;
class RandomNumberGenerator;
class RegExpStack;
@@ -308,7 +307,6 @@
enum ParallelSystemComponent {
PARALLEL_SWEEPING,
CONCURRENT_SWEEPING,
- PARALLEL_MARKING,
PARALLEL_RECOMPILATION
};
@@ -1107,10 +1105,6 @@
// TODO(svenpanne) This method is on death row...
static v8::Isolate* GetDefaultIsolateForLocking();
- MarkingThread** marking_threads() {
- return marking_thread_;
- }
-
SweeperThread** sweeper_threads() {
return sweeper_thread_;
}
@@ -1362,7 +1356,6 @@
DeferredHandles* deferred_handles_head_;
OptimizingCompilerThread* optimizing_compiler_thread_;
- MarkingThread** marking_thread_;
SweeperThread** sweeper_thread_;
// Counts deopt points if deopt_every_n_times is enabled.
@@ -1371,7 +1364,6 @@
friend class ExecutionAccess;
friend class HandleScopeImplementer;
friend class IsolateInitializer;
- friend class MarkingThread;
friend class OptimizingCompilerThread;
friend class SweeperThread;
friend class ThreadManager;
=======================================
--- /trunk/src/log.cc Mon Sep 23 14:09:36 2013 UTC
+++ /trunk/src/log.cc Tue Oct 1 08:21:50 2013 UTC
@@ -1629,6 +1629,10 @@
description = "A builtin from the snapshot";
tag = Logger::BUILTIN_TAG;
break;
+ case Code::HANDLER:
+ description = "An IC handler from the snapshot";
+ tag = Logger::HANDLER_TAG;
+ break;
case Code::KEYED_LOAD_IC:
description = "A keyed load IC from the snapshot";
tag = Logger::KEYED_LOAD_IC_TAG;
=======================================
--- /trunk/src/log.h Fri Aug 30 11:35:42 2013 UTC
+++ /trunk/src/log.h Tue Oct 1 08:21:50 2013 UTC
@@ -131,6 +131,7 @@
V(CALLBACK_TAG, "Callback") \
V(EVAL_TAG, "Eval") \
V(FUNCTION_TAG, "Function") \
+ V(HANDLER_TAG, "Handler") \
V(KEYED_LOAD_IC_TAG, "KeyedLoadIC") \
V(KEYED_LOAD_POLYMORPHIC_IC_TAG, "KeyedLoadPolymorphicIC") \
V(KEYED_EXTERNAL_ARRAY_LOAD_IC_TAG, "KeyedExternalArrayLoadIC") \
=======================================
--- /trunk/src/mark-compact.cc Thu Sep 12 09:02:59 2013 UTC
+++ /trunk/src/mark-compact.cc Tue Oct 1 08:21:50 2013 UTC
@@ -38,7 +38,6 @@
#include "ic-inl.h"
#include "incremental-marking.h"
#include "mark-compact.h"
-#include "marking-thread.h"
#include "objects-visiting.h"
#include "objects-visiting-inl.h"
#include "stub-cache.h"
@@ -599,20 +598,6 @@
bool MarkCompactCollector::IsConcurrentSweepingInProgress() {
return sweeping_pending_;
}
-
-
-void MarkCompactCollector::MarkInParallel() {
- for (int i = 0; i < FLAG_marking_threads; i++) {
- isolate()->marking_threads()[i]->StartMarking();
- }
-}
-
-
-void MarkCompactCollector::WaitUntilMarkingCompleted() {
- for (int i = 0; i < FLAG_marking_threads; i++) {
- isolate()->marking_threads()[i]->WaitForMarkingThread();
- }
-}
bool Marking::TransferMark(Address old_start, Address new_start) {
=======================================
--- /trunk/src/mark-compact.h Wed Sep 4 13:57:32 2013 UTC
+++ /trunk/src/mark-compact.h Tue Oct 1 08:21:50 2013 UTC
@@ -734,11 +734,6 @@
bool sequential_sweeping() const {
return sequential_sweeping_;
}
-
- // Parallel marking support.
- void MarkInParallel();
-
- void WaitUntilMarkingCompleted();
private:
MarkCompactCollector();
=======================================
--- /trunk/src/mips/ic-mips.cc Thu Sep 12 09:02:59 2013 UTC
+++ /trunk/src/mips/ic-mips.cc Tue Oct 1 08:21:50 2013 UTC
@@ -656,7 +656,7 @@
// Probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, a0, a2, a3, t0, t1, t2);
@@ -1496,7 +1496,7 @@
// Get the receiver from the stack and probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, strict_mode,
+ Code::HANDLER, MONOMORPHIC, strict_mode,
Code::NORMAL, Code::STORE_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, a1, a2, a3, t0, t1, t2);
=======================================
--- /trunk/src/objects-inl.h Thu Sep 26 07:36:30 2013 UTC
+++ /trunk/src/objects-inl.h Tue Oct 1 08:21:50 2013 UTC
@@ -3776,6 +3776,7 @@
int Code::major_key() {
ASSERT(kind() == STUB ||
+ kind() == HANDLER ||
kind() == BINARY_OP_IC ||
kind() == COMPARE_IC ||
kind() == COMPARE_NIL_IC ||
@@ -3790,6 +3791,7 @@
void Code::set_major_key(int major) {
ASSERT(kind() == STUB ||
+ kind() == HANDLER ||
kind() == BINARY_OP_IC ||
kind() == COMPARE_IC ||
kind() == COMPARE_NIL_IC ||
=======================================
--- /trunk/src/objects.cc Mon Sep 30 13:42:25 2013 UTC
+++ /trunk/src/objects.cc Tue Oct 1 08:21:50 2013 UTC
@@ -10363,31 +10363,35 @@
}
-Code* Code::FindFirstCode() {
+Code* Code::FindFirstHandler() {
ASSERT(is_inline_cache_stub());
DisallowHeapAllocation no_allocation;
int mask = RelocInfo::ModeMask(RelocInfo::CODE_TARGET);
for (RelocIterator it(this, mask); !it.done(); it.next()) {
RelocInfo* info = it.rinfo();
- return Code::GetCodeFromTargetAddress(info->target_address());
+ Code* code = Code::GetCodeFromTargetAddress(info->target_address());
+ if (code->kind() == Code::HANDLER) return code;
}
return NULL;
}
-void Code::FindAllCode(CodeHandleList* code_list, int length) {
+bool Code::FindHandlers(CodeHandleList* code_list, int length) {
ASSERT(is_inline_cache_stub());
DisallowHeapAllocation no_allocation;
int mask = RelocInfo::ModeMask(RelocInfo::CODE_TARGET);
int i = 0;
for (RelocIterator it(this, mask); !it.done(); it.next()) {
- if (i++ == length) return;
+ if (i == length) return true;
RelocInfo* info = it.rinfo();
Code* code = Code::GetCodeFromTargetAddress(info->target_address());
- ASSERT(code->kind() == Code::STUB);
+ // IC stubs with handlers never contain non-handler code objects before
+ // handler targets.
+ if (code->kind() != Code::HANDLER) break;
code_list->Add(Handle<Code>(code));
+ i++;
}
- UNREACHABLE();
+ return i == length;
}
=======================================
--- /trunk/src/objects.h Thu Sep 26 07:36:30 2013 UTC
+++ /trunk/src/objects.h Tue Oct 1 08:21:50 2013 UTC
@@ -333,7 +333,7 @@
// NOTE: Everything following JS_VALUE_TYPE is considered a
// JSObject for GC purposes. The first four entries here have typeof
// 'object', whereas JS_FUNCTION_TYPE has typeof 'function'.
-#define
INSTANCE_TYPE_LIST_ALL(V) \
+#define
INSTANCE_TYPE_LIST(V) \
V(STRING_TYPE)
\
V(ASCII_STRING_TYPE)
\
V(CONS_STRING_TYPE)
\
@@ -431,19 +431,9 @@
\
V(JS_FUNCTION_TYPE)
\
V(JS_FUNCTION_PROXY_TYPE)
\
-
-#ifdef ENABLE_DEBUGGER_SUPPORT
-#define
INSTANCE_TYPE_LIST_DEBUGGER(V) \
V(DEBUG_INFO_TYPE)
\
V(BREAK_POINT_INFO_TYPE)
-#else
-#define INSTANCE_TYPE_LIST_DEBUGGER(V)
-#endif
-#define
INSTANCE_TYPE_LIST(V) \
-
INSTANCE_TYPE_LIST_ALL(V)
\
- INSTANCE_TYPE_LIST_DEBUGGER(V)
-
// Since string types are not consecutive, this macro is used to
// iterate over them.
@@ -4763,6 +4753,7 @@
V(FUNCTION) \
V(OPTIMIZED_FUNCTION) \
V(STUB) \
+ V(HANDLER) \
V(BUILTIN) \
V(REGEXP)
@@ -4997,9 +4988,12 @@
void FindAllMaps(MapHandleList* maps);
void ReplaceFirstMap(Map* replace);
- // Find the first code in an IC stub.
- Code* FindFirstCode();
- void FindAllCode(CodeHandleList* code_list, int length);
+ // Find the first handler in an IC stub.
+ Code* FindFirstHandler();
+
+ // Find |length| handlers and put them into |code_list|. Returns false
if not
+ // enough handlers can be found.
+ MUST_USE_RESULT bool FindHandlers(CodeHandleList* code_list, int length);
// Find the first name in an IC stub.
Name* FindFirstName();
=======================================
--- /trunk/src/stub-cache.cc Mon Sep 23 14:09:36 2013 UTC
+++ /trunk/src/stub-cache.cc Tue Oct 1 08:21:50 2013 UTC
@@ -140,7 +140,7 @@
? OWN_MAP : PROTOTYPE_MAP;
ASSERT(type != Code::NORMAL);
Code::Flags flags = Code::ComputeMonomorphicFlags(
- Code::STUB, Code::kNoExtraICState, type, kind, holder_flag);
+ Code::HANDLER, Code::kNoExtraICState, type, kind, holder_flag);
Handle<Object> probe(stub_holder->map()->FindInCodeCache(*name, flags),
isolate_);
if (probe->IsCode()) return Handle<Code>::cast(probe);
@@ -157,7 +157,7 @@
STANDARD_STORE, strict_mode);
ASSERT(type != Code::NORMAL);
Code::Flags flags = Code::ComputeMonomorphicFlags(
- Code::STUB, extra_ic_state, type, kind);
+ Code::HANDLER, extra_ic_state, type, kind);
Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags),
isolate_);
if (probe->IsCode()) return Handle<Code>::cast(probe);
@@ -1987,7 +1987,7 @@
Handle<Name> name) {
ASSERT(type != Code::NORMAL);
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState, type, kind);
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState, type, kind);
Handle<Code> code = GetCodeWithFlags(flags, name);
PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, *name));
JitEvent(name, code);
@@ -2000,7 +2000,7 @@
Handle<Name> name) {
ASSERT(type != Code::NORMAL);
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, extra_state(), type, kind);
+ Code::HANDLER, MONOMORPHIC, extra_state(), type, kind);
Handle<Code> code = GetCodeWithFlags(flags, name);
PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, *name));
JitEvent(name, code);
=======================================
--- /trunk/src/type-info.cc Wed Aug 21 11:18:12 2013 UTC
+++ /trunk/src/type-info.cc Tue Oct 1 08:21:50 2013 UTC
@@ -251,7 +251,7 @@
Handle<String> name,
SmallMapList* types) {
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
CollectReceiverTypes(expr->PropertyFeedbackId(), name, flags, types);
}
@@ -261,7 +261,7 @@
Handle<String> name,
SmallMapList* types) {
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::STORE_IC);
CollectReceiverTypes(expr->AssignmentFeedbackId(), name, flags, types);
}
=======================================
--- /trunk/src/v8.cc Wed Sep 11 08:25:48 2013 UTC
+++ /trunk/src/v8.cc Tue Oct 1 08:21:50 2013 UTC
@@ -226,19 +226,6 @@
} else if (!FLAG_concurrent_sweeping && !FLAG_parallel_sweeping) {
FLAG_sweeper_threads = 0;
}
-
- if (FLAG_parallel_marking) {
- if (FLAG_marking_threads <= 0) {
- FLAG_marking_threads = SystemThreadManager::
- NumberOfParallelSystemThreads(
- SystemThreadManager::PARALLEL_MARKING);
- }
- if (FLAG_marking_threads == 0) {
- FLAG_parallel_marking = false;
- }
- } else {
- FLAG_marking_threads = 0;
- }
if (FLAG_concurrent_recompilation &&
SystemThreadManager::NumberOfParallelSystemThreads(
=======================================
--- /trunk/src/version.cc Mon Sep 30 13:42:25 2013 UTC
+++ /trunk/src/version.cc Tue Oct 1 08:21:50 2013 UTC
@@ -34,7 +34,7 @@
// system so their names cannot be changed without changing the scripts.
#define MAJOR_VERSION 3
#define MINOR_VERSION 22
-#define BUILD_NUMBER 4
+#define BUILD_NUMBER 5
#define PATCH_LEVEL 0
// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
=======================================
--- /trunk/src/x64/ic-x64.cc Thu Sep 12 09:02:59 2013 UTC
+++ /trunk/src/x64/ic-x64.cc Tue Oct 1 08:21:50 2013 UTC
@@ -1330,7 +1330,7 @@
// Probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, rax, rcx, rbx, rdx);
@@ -1451,7 +1451,7 @@
// Get the receiver from the stack and probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, strict_mode,
+ Code::HANDLER, MONOMORPHIC, strict_mode,
Code::NORMAL, Code::STORE_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, rdx, rcx, rbx, no_reg);
=======================================
--- /trunk/tools/gyp/v8.gyp Fri Sep 27 07:27:26 2013 UTC
+++ /trunk/tools/gyp/v8.gyp Tue Oct 1 08:21:50 2013 UTC
@@ -414,8 +414,6 @@
'../../src/macro-assembler.h',
'../../src/mark-compact.cc',
'../../src/mark-compact.h',
- '../../src/marking-thread.h',
- '../../src/marking-thread.cc',
'../../src/messages.cc',
'../../src/messages.h',
'../../src/natives.h',
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.