Reporting -1 as the size of an ILLEGAL reference which actually has
authorkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 7 Nov 2008 08:58:23 +0000 (08:58 +0000)
committerkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 7 Nov 2008 08:58:23 +0000 (08:58 +0000)
size 0 was too cute.
Review URL: http://codereview.chromium.org/9689

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/codegen-arm.cc
src/codegen-arm.h
src/codegen-ia32.cc
src/codegen-ia32.h

index 4d2cf2d26a3b048208d4cdf353cbf021e0450f5f..fae227016a68b610d17ad22d7faf46bc5270205e 100644 (file)
@@ -569,9 +569,7 @@ void CodeGenerator::UnloadReference(Reference* ref) {
   // Pop a reference from the stack while preserving TOS.
   Comment cmnt(masm_, "[ UnloadReference");
   int size = ref->size();
-  if (size <= 0) {
-    // Do nothing. No popping is necessary.
-  } else {
+  if (size > 0) {
     frame_->Pop(r0);
     frame_->Drop(size);
     frame_->Push(r0);
index 8d02691277719e2d5d9b3ad6ef24dd7ab9d3b2ef..50f1906b3f59d954689b27cd1f34a9db05a801a7 100644 (file)
@@ -117,8 +117,8 @@ class Reference BASE_EMBEDDED {
     type_ = value;
   }
 
-  // The size of the reference or -1 if the reference is illegal.
-  int size() const { return type_; }
+  // The size the reference takes up on the stack.
+  int size() const { return (type_ == ILLEGAL) ? 0 : type_; }
 
   bool is_illegal() const { return type_ == ILLEGAL; }
   bool is_slot() const { return type_ == SLOT; }
index a29153e7536978f8426134e9889241022689cfe8..22f35232bf95c86243a9cd33deecadc4d3af7c46 100644 (file)
@@ -607,12 +607,10 @@ void CodeGenerator::UnloadReference(Reference* ref) {
   // Pop a reference from the stack while preserving TOS.
   Comment cmnt(masm_, "[ UnloadReference");
   int size = ref->size();
-  if (size <= 0) {
-    // Do nothing. No popping is necessary.
-  } else if (size == 1) {
+  if (size == 1) {
     frame_->Pop(eax);
     __ mov(frame_->Top(), eax);
-  } else {
+  } else if (size > 1) {
     frame_->Pop(eax);
     frame_->Drop(size);
     frame_->Push(eax);
index 39eea1b09917336acfa36a5e6ea05cc64425bbb9..cb1c1855d7df95cf981b632da1b792d40934172b 100644 (file)
@@ -121,8 +121,8 @@ class Reference BASE_EMBEDDED {
     type_ = value;
   }
 
-  // The size of the reference or -1 if the reference is illegal.
-  int size() const { return type_; }
+  // The size the reference takes up on the stack.
+  int size() const { return (type_ == ILLEGAL) ? 0 : type_; }
 
   bool is_illegal() const { return type_ == ILLEGAL; }
   bool is_slot() const { return type_ == SLOT; }