comparison src/share/vm/code/codeBlob.cpp @ 6266:1d7922586cf6

7023639: JSR 292 method handle invocation needs a fast path for compiled code 6984705: JSR 292 method handle creation should not go through JNI Summary: remove assembly code for JDK 7 chained method handles Reviewed-by: jrose, twisti, kvn, mhaupt Contributed-by: John Rose <john.r.rose@oracle.com>, Christian Thalinger <christian.thalinger@oracle.com>, Michael Haupt <michael.haupt@oracle.com>
author twisti
date Tue, 24 Jul 2012 10:51:00 -0700
parents d2a62e0f25eb
children da91efe96a93 8c5333c80cfd
comparison
equal deleted inserted replaced
6241:aba91a731143 6266:1d7922586cf6
357 return p; 357 return p;
358 } 358 }
359 359
360 360
361 //---------------------------------------------------------------------------------------------------- 361 //----------------------------------------------------------------------------------------------------
362 // Implementation of RicochetBlob
363
364 RicochetBlob::RicochetBlob(
365 CodeBuffer* cb,
366 int size,
367 int bounce_offset,
368 int exception_offset,
369 int frame_size
370 )
371 : SingletonBlob("RicochetBlob", cb, sizeof(RicochetBlob), size, frame_size, (OopMapSet*) NULL)
372 {
373 _bounce_offset = bounce_offset;
374 _exception_offset = exception_offset;
375 }
376
377
378 RicochetBlob* RicochetBlob::create(
379 CodeBuffer* cb,
380 int bounce_offset,
381 int exception_offset,
382 int frame_size)
383 {
384 RicochetBlob* blob = NULL;
385 ThreadInVMfromUnknown __tiv; // get to VM state in case we block on CodeCache_lock
386 {
387 MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
388 unsigned int size = allocation_size(cb, sizeof(RicochetBlob));
389 blob = new (size) RicochetBlob(cb, size, bounce_offset, exception_offset, frame_size);
390 }
391
392 trace_new_stub(blob, "RicochetBlob");
393
394 return blob;
395 }
396
397
398 //----------------------------------------------------------------------------------------------------
399 // Implementation of DeoptimizationBlob 362 // Implementation of DeoptimizationBlob
400 363
401 DeoptimizationBlob::DeoptimizationBlob( 364 DeoptimizationBlob::DeoptimizationBlob(
402 CodeBuffer* cb, 365 CodeBuffer* cb,
403 int size, 366 int size,