Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: test/cctest/test-heap.cc

Issue 235153003: Handlify code allocation. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: fix mips tests Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 static void CheckFindCodeObject(Isolate* isolate) { 111 static void CheckFindCodeObject(Isolate* isolate) {
112 // Test FindCodeObject 112 // Test FindCodeObject
113 #define __ assm. 113 #define __ assm.
114 114
115 Assembler assm(isolate, NULL, 0); 115 Assembler assm(isolate, NULL, 0);
116 116
117 __ nop(); // supported on all architectures 117 __ nop(); // supported on all architectures
118 118
119 CodeDesc desc; 119 CodeDesc desc;
120 assm.GetCode(&desc); 120 assm.GetCode(&desc);
121 Heap* heap = isolate->heap(); 121 Handle<Code> code = isolate->factory()->NewCode(
122 Object* code = heap->CreateCode( 122 desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
123 desc,
124 Code::ComputeFlags(Code::STUB),
125 Handle<Code>())->ToObjectChecked();
126 CHECK(code->IsCode()); 123 CHECK(code->IsCode());
127 124
128 HeapObject* obj = HeapObject::cast(code); 125 HeapObject* obj = HeapObject::cast(*code);
129 Address obj_addr = obj->address(); 126 Address obj_addr = obj->address();
130 127
131 for (int i = 0; i < obj->Size(); i += kPointerSize) { 128 for (int i = 0; i < obj->Size(); i += kPointerSize) {
132 Object* found = isolate->FindCodeObject(obj_addr + i); 129 Object* found = isolate->FindCodeObject(obj_addr + i);
133 CHECK_EQ(code, found); 130 CHECK_EQ(*code, found);
134 } 131 }
135 132
136 Object* copy = heap->CreateCode( 133 Handle<Code> copy = isolate->factory()->NewCode(
137 desc, 134 desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
138 Code::ComputeFlags(Code::STUB), 135 HeapObject* obj_copy = HeapObject::cast(*copy);
139 Handle<Code>())->ToObjectChecked();
140 CHECK(copy->IsCode());
141 HeapObject* obj_copy = HeapObject::cast(copy);
142 Object* not_right = isolate->FindCodeObject(obj_copy->address() + 136 Object* not_right = isolate->FindCodeObject(obj_copy->address() +
143 obj_copy->Size() / 2); 137 obj_copy->Size() / 2);
144 CHECK(not_right != code); 138 CHECK(not_right != *code);
145 } 139 }
146 140
147 141
148 TEST(HandleNull) { 142 TEST(HandleNull) {
149 CcTest::InitializeVM(); 143 CcTest::InitializeVM();
150 Isolate* isolate = CcTest::i_isolate(); 144 Isolate* isolate = CcTest::i_isolate();
151 HandleScope outer_scope(isolate); 145 HandleScope outer_scope(isolate);
152 LocalContext context; 146 LocalContext context;
153 Handle<Object> n(reinterpret_cast<Object*>(NULL), isolate); 147 Handle<Object> n(reinterpret_cast<Object*>(NULL), isolate);
154 CHECK(!n.is_null()); 148 CHECK(!n.is_null());
(...skipping 3893 matching lines...) Expand 10 before | Expand all | Expand 10 after
4048 v8::Context::Scope cscope(context); 4042 v8::Context::Scope cscope(context);
4049 4043
4050 v8::Local<v8::Value> result = CompileRun( 4044 v8::Local<v8::Value> result = CompileRun(
4051 "var locals = '';" 4045 "var locals = '';"
4052 "for (var i = 0; i < 512; i++) locals += 'var v' + i + '= 42;';" 4046 "for (var i = 0; i < 512; i++) locals += 'var v' + i + '= 42;';"
4053 "eval('function f() {' + locals + 'return function() { return v0; }; }');" 4047 "eval('function f() {' + locals + 'return function() { return v0; }; }');"
4054 "interrupt();" // This triggers a fake stack overflow in f. 4048 "interrupt();" // This triggers a fake stack overflow in f.
4055 "f()()"); 4049 "f()()");
4056 CHECK_EQ(42.0, result->ToNumber()->Value()); 4050 CHECK_EQ(42.0, result->ToNumber()->Value());
4057 } 4051 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698