From 72a05845ec47fbe8348af66b6215ef08fc4e8b95 Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Thu, 18 Apr 2013 14:41:24 +0000 Subject: [PATCH] Revert r14310 due to isolate tests failure. R=mstarzinger@chromium.org BUG= Review URL: https://chromiumcodereview.appspot.com/14021004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14334 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/d8.cc | 354 +++++++++-------------------------------- src/d8.h | 13 -- src/debug.cc | 1 + src/objects.h | 2 +- test/mjsunit/bugs/bug-proto.js | 61 ------- 5 files changed, 78 insertions(+), 353 deletions(-) delete mode 100644 test/mjsunit/bugs/bug-proto.js diff --git a/src/d8.cc b/src/d8.cc index e52e9a5..8f6e384 100644 --- a/src/d8.cc +++ b/src/d8.cc @@ -83,7 +83,7 @@ const char kArrayBufferMarkerPropName[] = "d8::_is_array_buffer_"; const char kArrayMarkerPropName[] = "d8::_is_typed_array_"; -#define FOR_EACH_STRING(V) \ +#define FOR_EACH_SYMBOL(V) \ V(ArrayBuffer, "ArrayBuffer") \ V(ArrayBufferMarkerPropName, kArrayBufferMarkerPropName) \ V(ArrayMarkerPropName, kArrayMarkerPropName) \ @@ -94,50 +94,36 @@ const char kArrayMarkerPropName[] = "d8::_is_typed_array_"; V(length, "length") -class PerIsolateData { +class Symbols { public: - explicit PerIsolateData(Isolate* isolate) : isolate_(isolate), realms_(NULL) { + explicit Symbols(Isolate* isolate) : isolate_(isolate) { HandleScope scope(isolate); -#define INIT_STRING(name, value) \ - name##_string_ = Persistent::New(isolate, String::NewSymbol(value)); - FOR_EACH_STRING(INIT_STRING) -#undef INIT_STRING +#define INIT_SYMBOL(name, value) \ + name##_ = Persistent::New(isolate, String::NewSymbol(value)); + FOR_EACH_SYMBOL(INIT_SYMBOL) +#undef INIT_SYMBOL isolate->SetData(this); } - ~PerIsolateData() { -#define DISPOSE_STRING(name, value) name##_string_.Dispose(isolate_); - FOR_EACH_STRING(DISPOSE_STRING) -#undef DISPOSE_STRING + ~Symbols() { +#define DISPOSE_SYMBOL(name, value) name##_.Dispose(isolate_); + FOR_EACH_SYMBOL(DISPOSE_SYMBOL) +#undef DISPOSE_SYMBOL isolate_->SetData(NULL); // Not really needed, just to be sure... } - inline static PerIsolateData* Get(Isolate* isolate) { - return reinterpret_cast(isolate->GetData()); +#define DEFINE_SYMBOL_GETTER(name, value) \ + static Persistent name(Isolate* isolate) { \ + return reinterpret_cast(isolate->GetData())->name##_; \ } - -#define DEFINE_STRING_GETTER(name, value) \ - static Persistent name##_string(Isolate* isolate) { \ - return Get(isolate)->name##_string_; \ - } - FOR_EACH_STRING(DEFINE_STRING_GETTER) -#undef DEFINE_STRING_GETTER + FOR_EACH_SYMBOL(DEFINE_SYMBOL_GETTER) +#undef DEFINE_SYMBOL_GETTER private: - friend class Shell; Isolate* isolate_; - int realm_count_; - int realm_current_; - int realm_switch_; - Persistent* realms_; - Persistent realm_shared_; - -#define DEFINE_MEMBER(name, value) Persistent name##_string_; - FOR_EACH_STRING(DEFINE_MEMBER) +#define DEFINE_MEMBER(name, value) Persistent name##_; + FOR_EACH_SYMBOL(DEFINE_MEMBER) #undef DEFINE_MEMBER - - void RealmInit(); - int RealmFind(Handle context); }; @@ -221,20 +207,14 @@ bool Shell::ExecuteString(Isolate* isolate, // When debugging make exceptions appear to be uncaught. try_catch.SetVerbose(true); } - Handle